第一个问题(并希望,但怀疑我只有一个)jQuery UI自动完成行为。如何搜索输入的自由文本?
我正在使用jQuery UI自动完成。以下是复制我的问题的示例代码。
var suggestions = ["C", "Clojure", "JavaScript", "Perl", "PHP"];
$("#autocomplete").autocomplete({
source: suggestions
});
当用户键入'J'时,他们会被提示'Clojure'和'JavaScript'作为建议。
我从这个列表中省略了Java,如果用户想要搜索Java,他们键入'Java',请按回车键但表单不提交。如果您添加一个空格,'JavaScript'建议消失,并且可以通过按回车键提交表单。
我正在创建免费搜索,我希望用户能够通过按Enter键进行搜索,即使有可用的建议。
$("#autocomplete").keypress(function(event) {
alert(event.keyCode);
if (event.keyCode=='13') $this.closest('form').submit();
});
我尝试了上述想法我可以手动检测提交按键并提交表单,但该警报显示检测到所有按键EXCEPT提交这似乎是由自动完成被抑制。
任何帮助,非常感谢!谢谢。
嗨,我很感谢你不厌其烦地回应。 – John 2010-09-24 22:38:09
哎呀,似乎堆栈溢出具有相反的问题,并输入提交我的回应,而不是我预期的新行!此代码不能解决问题,出于某种原因,输入密钥,代码'13'只是无法通过按键识别。这就像它被故意禁用,我只是无法解决如何启用它!如果您使用id ='key'创建一个div并在keypress函数中添加以下内容:$('#key').text('Key:'+ e.keyCode);并输入你将会看到我的意思!如果没有任何建议,它只会收到'13'。任何想法如何强制它提交输入?谢谢! – John 2010-09-24 22:42:36
感谢您的更新...仍然没有在我的最终(我使用Chrome浏览器,您的浏览器可能处理不同?),但我也设法让它在这里工作。看看自动完成的代码,它有一个keydown绑定在输入按键的地方: if(self.menu.element.is(“:visible”)){event.preventDefault(); } 这就是停止表单提交输入(我一直试图恢复的默认行为!)。考虑到这一点,我们所需要做的就是用keydown替换keypress,我们的代码在我尝试过的浏览器中工作。 感谢您的帮助! – John 2010-09-27 13:33:48