0
我特别喜欢在按下ENTER时阻止交互,以防止jQueryUI自动完成选择当前关注的项目并关闭菜单。如何防止jQueryUI自动完成的默认键盘交互?
我指的是下列文件:http://api.jqueryui.com/autocomplete/#event-change
我特别喜欢在按下ENTER时阻止交互,以防止jQueryUI自动完成选择当前关注的项目并关闭菜单。如何防止jQueryUI自动完成的默认键盘交互?
我指的是下列文件:http://api.jqueryui.com/autocomplete/#event-change
UPDATE:
的原理是一样的。只要改变setTimeout
功能来提交您的形式代替(如下所示:http://jsfiddle.net/X8Ghc/8/)
UPDATE:
你是正确的,$(this)
本来是指ui-menu
(显然没有)。新的小提琴http://jsfiddle.net/X8Ghc/7/工作得很好。
$(document).ready(function() {
$("#autocomplete").autocomplete({
"open": function(e, ui) {
//using the 'open' event to capture the originally typed text
var self = $(this),
val = self.val();
//saving original search term in 'data'.
self.data('searchTerm', val);
},
"select": function(e, ui) {
var self = $(this),
keyPressed = e.keyCode,
keyWasEnter = e.keyCode === 13,
useSelection = true,
val = self.data('searchTerm');
if (keyPressed) {
if (keyWasEnter) {
useSelection = false;
e.preventDefault();
window.setTimeout(function() {
//since there is apparently no way to prevent this
//contemptible menu from closing, re-open the menu
//using the original search term after this handler
//finishes executing (using 'setTimeout' with a delay
//of 0 milliseconds).
self.val(val);
self.autocomplete('search', val);
}, 0);
}
}
return useSelection;
},
"source": ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
});
});
原文:
此作品在a fiddle:
$(document).ready(function() {
$("#autocomplete").autocomplete({
"select": function(e, ui) {
var keyPressed = e.keyCode,
keyWasEnter = e.keyCode === 13,
useSelection = true;
console.log(e);
if (keyPressed) {
if (keyWasEnter) {
useSelection = false;
$(this).open(e, ui);
}
}
return useSelection;
},
"source": ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
});
});
嗯,当我剪切和粘贴你的'选择:功能()'到我的应用程序,我发现了以下错误'Uncaught TypeError:Object [object Object]没有方法'open''。什么是'$(this)'?它应该不是指'ui-menu',而我认为我指的是'$('#autocomplete')' –
@timpeterson:抱歉... ... :)更新了答案和小提琴。 – pete
感谢您的更正。对不起,我认为我不清楚。我不想要的是回到“选择当前重点项目”。我想要返回提交表单发布任何在输入框中(不是在ui菜单中选择的)。我对ui菜单是否打开感兴趣不大。我一直得到这个错误'Uncaught TypeError:无法读取位于jQuery.autocomplete.js中的未定义属性'值'。 –