我希望AutoComplete的行为与此类似。
当用户在文本框中输入内容时,不应该发生任何事情。 自动填充建议列表应仅在用户完成写入时出现 在文本框中按下回车键..
知道如何做到这一点..或者在哪里更改代码..
答案 0 :(得分:5)
STEP:1
更改 jquery.ui.autocomplete.js 文件以通过更改具有以下签名的方法来接受回车键
.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;
}
});
});
答案 1 :(得分:2)
我建议检查“输入密钥”的按键事件。当按下键是“Enter”时,触发自动完成功能,如下所示。
$(#inputBoxId).keypress(function(e) {
if(e.which == 13) {
$( "#elementId" ).autocomplete({
//............... bind autocomplete and write your code
});
}
});
试试这个。可能对你有帮助。
答案 2 :(得分:0)
可能动态绑定/取消绑定控件。例如。在按下回车键之前不要让它自动完成?只读取源框,或者如果文本发生变化则删除,直到再次按Enter键为止?我很确定你可以手动触发自动完成事件,这会显示下拉列表。