Javascript jQuery UI自动完成单击结果提交
我一直在想,当用户从自动完成选项中选择结果时,如何提交表单。它需要使用鼠标单击或enter按钮。我看到了一些例子,但总是零碎的。没有人显示整个函数 我有下面的代码,但我得到错误,说结果不是函数。我不知道如何结合这个来做我想做的事。感谢您的帮助Javascript jQuery UI自动完成单击结果提交,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我一直在想,当用户从自动完成选项中选择结果时,如何提交表单。它需要使用鼠标单击或enter按钮。我看到了一些例子,但总是零碎的。没有人显示整个函数 我有下面的代码,但我得到错误,说结果不是函数。我不知道如何结合这个来做我想做的事。感谢您的帮助 jQuery(document).ready(function(){ jQuery("#vsearch").autocomplete("ajax/search.php", { minLength: 2 } ); jQuery("#vs
jQuery(document).ready(function(){
jQuery("#vsearch").autocomplete("ajax/search.php",
{
minLength: 2
}
);
jQuery("#vsearch").result(function(event, data, formatted) {
jQuery('#vsearch').value( formatted );
jQuery('#search').submit();
});
});
发件人:
选择-类型:自动完成选择
选择项目时触发
从菜单上;ui.item指的是
所选项目。的默认操作
选择将替换文本字段的
值与选定的
项目取消此事件可防止
该值不会被更新,但不会被更新
不阻止菜单关闭
代码示例
提供一个回调函数来处理
选择事件作为初始选项
$( ".selector" ).autocomplete({
select: function(event, ui) { ... }
});
按类型绑定到选择事件:
自动完成选择
$( ".selector" ).bind( "autocompleteselect", function(event, ui) {
...
});
因此,您可以使用:
编辑:在用户未选择任何内容的情况下进行修改
$("#vsearch").autocomplete({
source: "ajax/search.php",
minLength: 2,
select: function(event, ui) {
if(ui.item){
$('#vsearch').val(ui.item.value);
}
$('#search').submit();
}
});
如果我确定您想要做什么。实际上,您不需要将for元素和form作为ID的目标。。。因为该信息已经通过事件对象传递给select函数。这样获取表单更好,因为在一个页面上可能有多个表单要应用自动完成。或者您可能希望在多个元素上自动完成 另外,另一个答案中的语法是错误的。JQuery使用.val而不是.value来设置输入的值 下面是一个更正的示例:
顺便说一句,如果你没有做出选择,你就不能提交输入中的内容了吗?谢谢,嗯,当使用选择选项时,按回车键似乎仍然不能提交。我不认为这是你的代码。它可能是自动完成的,因为即使没有选择选项,您也必须选择一些内容,否则将无法使用enter提交。因为如果选择不是你想要的呢?奇怪,如果你有其他建议那就太酷了。又是Thx,我知道它在做什么。如果它最终与您要查找的内容不匹配,并且没有给您任何选择,它将按enter键提交,但只要有选择,它将仅在您选择项目时使用enter键提交。如果是这样的话,我想是这样的。谢谢你帮了我这么多。如果这对你不起作用,请替换$'vsearch'.valueui.item.value;使用$'vsearch.valui.item.value;:-非常感谢,谢谢你。它确实帮助我解决了与此相关的问题。我非常感谢:D+1使用了对象的引用,而不是特定的选择器,例如vsearch。当然,方法是这样的。这应该是选定的答案
$("#vsearch").autocomplete({
source: "ajax/search.php",
minLength: 2,
select: function(event, ui) {
//assign value back to the form element
if(ui.item){
$(event.target).val(ui.item.value);
}
//submit the form
$(event.target.form).submit();
}
});