我有一個帶有JQuery UI自動填充功能的搜索框。我希望將用戶輸入的術語與一組案例進行比較(請參閱下面switch語句中的「小貓」和「小狗」,另請參見JSFiddle:http://jsfiddle.net/XcbMQ/4/)。使用JQuery UI自動填充小部件時處理textbox .change
這個現有的代碼工作如果用戶鍵入整個單詞「小貓」:
$('#change').text("nothing entered yet")
var $typeahead = new Array ("kittens","puppies","giraffe","trucks");
$('#query').autocomplete({source: $typeahead, autoFocus: true}).change(function() {
var text = $(this).val().toLowerCase();
switch (text) {
case "kittens":
$('#change').text("kittens");
break;
case "puppies":
$('#change').text("puppies");
break;
default:
$('#change').text("neither kittens nor puppies");
break;
}
});
但是,如果用戶需要自動完成的優勢和箭頭下來只鍵入幾個字母后,選擇選項「小貓」 ,那麼什麼都不會發生 - 因爲我的函數綁定了.change,並且.query在#query上觸發時,還沒有匹配。 IE用戶輸入「ki」然後向下箭頭,這與「小貓」不匹配。
如何更改我的功能,使其不會觸發,直到輸入完整的單詞(用戶手動輸入「kittens」)或用戶輸入「ki」,然後從自動完成選項中進行選擇?換句話說:除了.change以外,還有什麼選項可以檢測文本框中是否有條目?