继我之前的两个问题之后:
How to make jQuery autocomplete execute a search() when user hits submit
How would I trim the input to a JQuery auto-complete box?
我的表单中有一个 jQuery UI 1.8 自动完成框,在大多数情况下,它的工作原理非常棒。我遇到的一个问题是,如果我输入一个有效名称,但不选择出现的选项,那么该名称永远不会与我的{name,value}
匹配列表,因此未设置包含“值”部分的隐藏输入的正确值。这当然会导致令人困惑的情况,即可以输入一个您知道正确的名称,点击提交并被告知您没有输入正确的名称(因为值为 null
)。
即使用户没有从自动完成框中做出选择,我如何确保设置了隐藏的输入值?是否有一些功能可以绑定(bind)到提交按钮的 onclick 事件,这将使 jQuery 搜索框中的内容并自动选择第一个选项?或者,当用户以任何方式(返回/tab/单击关闭/等)取消选择输入框时,我是否可以让自动完成选择第一个选项?
谢谢。
最佳答案
这是我对您的问题的解决方案。我刚刚添加了关于 change 事件的部分。 希望对您有所帮助。
jQuery(function(){
jQuery('#Resource').autocomplete({
source: data,
focus: function(event, ui) {
jQuery('#Resource').val(ui.item.label);
return false;
},
select: function(event, ui) {
jQuery('#Resource').val(ui.item.label);
jQuery('#EmployeeNumber').val(ui.item.value);
return false;
},
change: function(event,ui){
for (var i in data){
if (data[i].label==jQuery('#Resource').val()){
jQuery('#EmployeeNumber').val(data[i].value);
}
}
}
});
});
关于jQuery 自动完成问题 - 如果用户没有特别选择则不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317685/