当用户从自动填充选项中选择结果时,我一直试图弄清楚如何提交表单。它需要单击鼠标或输入按钮。我看到那里的例子,但总是分片。没有人展示整个功能。
我在下面有这个代码,但是我得到错误,说结果不是函数。我不知道如何将它结合起来做我想做的事情。任何帮助表示赞赏。
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();
});
});
答案 0 :(得分:30)
来自:http://api.jqueryui.com/autocomplete/#event-select
选择 - 输入:autocompleteselect
选择项目时触发 从菜单; ui.item指的是 选定的项目。默认操作 select是替换文本字段的 值与所选的值 项目。取消此事件会阻止 更新的价值,但确实如此 不要阻止菜单关闭。
代码示例
提供回调函数来处理 select事件作为init选项。
$( ".selector" ).autocomplete({ select: function(event, ui) { ... } });
按类型绑定到select事件: autocompleteselect。
$( ".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();
}
});
如果我确定你想要做什么。
答案 1 :(得分:28)
实际上,您不需要通过ID来定位for元素和表单...因为该信息已经通过Event对象传递给select函数。最好以这种方式获取表单,因为您可能在页面上有多个要应用自动完成的表单。或者您可能希望在多个元素上自动完成。
另外,其他答案中的语法错误。 JQuery使用.val()而不是.value()来设置输入值。
以下是更正后的示例:
$("#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();
}
});