単純なjQueryUIオートコンプリートがありますが、これは機能していましたが、現在は機能していません。コードは次のとおりです。
<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:誰かが自分のコンピューターでこれをテストできれば素晴らしいでしょう