我有简单的 jQuery UI 自动完成功能,它可以正常工作,但现在不行。代码如下:
<html>
<head>
<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.23.custom.min.js"></script>
<script type="text/javascript">
$(function() {
$( "#city" ).autocomplete({
source: function( request, response ) {
var cities = new Array();
cities.push({"label" : "Chicago", "value" : 1});
cities.push({"label" : "Houston", "value" : 2});
response(cities);
},
focus: function(event, ui) {
//console.log(ui.item.label);
$(this).text(ui.item.label);
//console.log($(this).text());
event.preventDefault();
//console.log($(this).text());
},
select: function(event, ui) {
//console.log($(this).text());
event.preventDefault();
//console.log($(this).text());
}
});
});
</script>
</head>
<body>
<input id="city" />
</body>
</html>
我正在使用焦点处理程序在文本框中显示标签而不是值(这是自动完成默认情况下所做的)。现在发生的事情是文本框既没有显示标签也没有显示值,它显示的是我输入的值(比如“Chi”)
这是有效的,但现在不是。我认为这是因为我包含了其他一些 javascript,并且存在函数名称冲突。但是我将它移到了一个单独的 HTML 中,如您在上面看到的,它仍然无法正常工作。
顺便说一句,如果我取消注释这些控制台日志语句并从下拉列表中选择芝加哥,那么它们都会打印芝加哥。
这似乎是某个地方的一些愚蠢的错误,但让我难住了。有什么建议么?
编辑 1:顺便说一句,如果我移除焦点并选择处理程序,那么自动完成将使用其默认功能。
编辑 2:如果有人可以在自己的计算机上进行测试,那就太好了