当从菜单中选择项目时,我正在尝试提交表单。我在搜索表单上设置类,我正在使用在这里找到的事件选择:
http://docs.jquery.com/UI/Autocomplete#event-select
现在,当您使用键盘(UP和DOWN)选择项目时,它可以正常工作。但是,如果您使用鼠标选择项目,它将为您提供先前键入的值。
检查此屏幕:http://www.screenr.com/7T0s
这是我用来提交的:
$("#searchform-input").autocomplete({ select: function (a,b) { $(".searchform1").submit() } });
解决方法
这是因为select事件的默认行为是执行
after your event handler is finished running(这样你可以取消它,如果你这样选择)。
这意味着当您单击某些内容时,您的表单将在窗口小部件有机会正确填充输入之前提交。
您应该能够通过做一些小部件通常为您做的工作来解决这个问题:
$("#searchform-input").autocomplete({ select: function (a,b) { $(this).val(b.item.value); $(".searchform1").submit() } });
现在,您可能会想知道是的,但是为什么在使用键盘时它会起作用?
这是因为焦点事件实际上填充了输入中的重点项目(仔细查看;当您在列表中上下移动时,您会看到填充的输入)。当鼠标悬停在项目上时,将调用焦点事件,填充输入。当您使用回车键选择某项时,由于焦点事件,正确的值恰好在输入中。