オートコンプリートをこのように動作させたいです。
ユーザーがテキストボックスに何かを入力しているとき、何も起こらないはずです.オートコンプリート候補リストは、ユーザーがテキストボックスへの書き込みを終了してEnterキーを押したときにのみ表示されます..
これを行う方法についてのアイデア..またはコードを変更する場所..
オートコンプリートをこのように動作させたいです。
ユーザーがテキストボックスに何かを入力しているとき、何も起こらないはずです.オートコンプリート候補リストは、ユーザーがテキストボックスへの書き込みを終了してEnterキーを押したときにのみ表示されます..
これを行う方法についてのアイデア..またはコードを変更する場所..
ステップ1
jquery.ui.autocomplete.jsファイルを変更して、署名を持つメソッドを次のように変更して、Enter キーを受け入れるようにします。
.bind("keydown.autocomplete", 関数 (イベント)
次のコードを変更します
case keyCode.ENTER:
case keyCode.NUMPAD_ENTER:
// when menu is open and has focus
if (self.menu.active) {
// #6055 - Opera still allows the keypress to occur
// which causes forms to submit
suppressKeyPress = true;
event.preventDefault();
}
//passthrough - ENTER and TAB both select the current element
に
case keyCode.ENTER:
case keyCode.NUMPAD_ENTER:
// when menu is open and has focus
if (self.menu.active) {
// #6055 - Opera still allows the keypress to occur
// which causes forms to submit
suppressKeyPress = true;
event.preventDefault();
}
else {
clearTimeout(self.searching);
self.searching = setTimeout(function () {
// only search if the value has changed
self.selectedItem = null;
self.search(null, event);
}, self.options.delay);
}
//passthrough - ENTER and TAB both select the current element
STEP : 2 オートコンプリート バインディングを次のように変更する
$('.SearchAddresses').autocomplete({
// Your bind code by setting required parameters
search: function (event, ui) {
var key = CheckBrowser(event);
if (key == 13)
return true;
else
return false;
}
});
function CheckBrowser(e) {
if (window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
return key;
}
SETP : 3 asp.net フォーム コントロール内で使用している場合
それも含めます。
$(document).ready(function () {
$("form").keypress(function (e) {
var key = CheckBrowser(e);
if (key == 13) {
e.preventDefault();
return false;
}
else {
return true;
}
});
});
「EnterKey」のkeypressイベントを確認することをお勧めします。押されたキーが「Enter」の場合、以下のようにオートコンプリート機能をトリガーします。
$(#inputBoxId).keypress(function(e) {
if(e.which == 13) {
$( "#elementId" ).autocomplete({
//............... bind autocomplete and write your code
});
}
});
これを試してみてください。お役に立てば幸いです。
おそらく、コントロールを動的にバインド/バインド解除します。たとえば、Enter キーが押されるまでオートコンプリートにしないでください。ソースボックスを読み取り専用にするか、もう一度Enterキーを押すまでテキストが変更された場合は削除しますか? ドロップダウンを表示するオートコンプリートイベントを手動でトリガーできると確信しています。