jQuery jsonp 自动完成不可见的下拉项

标签 jquery ajax jquery-ui autocomplete jquery-ui-autocomplete

问题是所有下拉菜单项都是不可见的。自动完成工作正常,我得到项目,我可以选择它们,输入中的项目在焦点上发生变化,光标在悬停在下拉列表中的项目上时变为指针。我认为这是一些 css 问题,但几个小时后我还没有弄清楚......

贝娄是我的 ajax 和自动完成功能。一些评论:有一个 data.shift() 来删除第一项(我在下一步中需要的变量,它不会造成任何伤害)。在选定的几个隐藏输入中将被填充,当前一个已设置并正确填充。

<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

和 jquery:

$( "#id_city" ).autocomplete({
delay: 1000,
minLength: 0,
source: function( request, response ) {
$.ajaxSetup({ 
     beforeSend: function(xhr, settings) {
         function getCookie(name) {
             var cookieValue = null;
             if (document.cookie && document.cookie != '') {
                 var cookies = document.cookie.split(';');
                 for (var i = 0; i < cookies.length; i++) {
                     var cookie = jQuery.trim(cookies[i]);
                     // Does this cookie string begin with the name we want?
                 if (cookie.substring(0, name.length + 1) == (name + '=')) {
                     cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                     break;
                 }
             }
         }
         return cookieValue;
         }
         if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
             // Only send the token to relative URLs i.e. locally.
             xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
         }
     }
});
$.ajax({
url: '/country_auto/?country='+$("#id_country").val(),
dataType: "jsonp",
data: {
search:$('#id_city').val()
},
success: function( data ) {
data.shift();
response( data );
}
});
},
focus: function( event, ui ) {
$( "#id_city" ).val( ui.item.city );
return false;
},
select: function( event, ui ) {
$( "#id_city" ).val( ui.item.city );
$('#id_latdeg').val(Number(ui.item.latdeg));
return false;
},
});

JSON 字符串如下所示:

([{"tz": "Europe/Bratislava", "city": "Handlova", "latmin": 43, "lon": "18E45",      
"latdeg": "48"}, {"tz":     "Europe/Bratislava", "city": "Hlohovec", "latmin": 25, 
"lon": "17E48", "latdeg": "48"}, {"tz":     "Europe/Bratislava", "city": "Humenne", 
"latmin": 56, "lon": "21E54", "latdeg": "48"}])

我认为设置是正确的并且有效。只是下拉项不可见...可以选择它们,一切正常,但看不到它们...有人知道如何解决此问题吗?

最佳答案

所以,它现在可以正常工作了。诀窍是下拉列表中的项目需要命名为标签.. 可能是在某个地方写的,但我在近 16 小时内没有找到它,我正在研究这个...所以,这是有效的:

服务器发送以下字符串:

([{"tz": "Europe/Bratislava", "label": "Banovce nad Bebravou", "latdeg": "48",
 "lonmin":15, "londeg": "18", "latmin": 43}, {"tz": "Europe/Bratislava", "label": 
"Banska Bystrica", "latdeg": "48", "lonmin": 9, "londeg": "19", "latmin": 44}, {"tz": 
"Europe/Bratislava", "label": "Bardejov", "latdeg": "49", "lonmin": 16, "londeg": 
"21", "latmin": 17}, {"tz": "Europe/Bratislava", "label": "Bratislava", "latdeg": 
"48", "lonmin": 6, "londeg": "17", "latmin": 8}, {"tz": "Europe/Bratislava", "label":
"Brezno", "latdeg": "48", "lonmin": 38, "londeg": "19", "latmin": 48}])

所以城市现在被称为“标签”。这是最重要的。 focus 和 select 的变化如下:

success: function( data ) {
response (data);
}
});
},
focus: function( event, ui ) {
$( "#id_city" ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$('#id_city').val(ui.item.label);
$('#id_latdeg').val(ui.item.latdeg);

return false;
},
});

关于jQuery jsonp 自动完成不可见的下拉项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27344337/

相关文章:

jquery - 标签后的 CSS 语音气泡导致错误

javascript - 使用 Internet Explorer 双击复选框时出现问题

javascript - 解析 xml 后,结果未定义

javascript - jQuery AJAX 请求中的变量范围?

javascript - 当我尝试恢复 JW Player 视频时,它从头开始

jquery - 使用 jQuery 交换图像

PHP:从 jQuery 解析 JSON

java - ajax 调用中的 Access-Control-Allow-Origin 到 jersey rest web 服务

css - 那里有 jQueryUI LessCss 模板吗?

jquery - 如何使用 Angular.js 和 JQuery UI "link"数组和 DOM?