【发布时间】:2010-09-24 14:43:21
【问题描述】:
我已经安装了 jQuery Autocomplete (UI 1.6rc2) 并且运行良好,当用户选择一个项目时,它会使用关联的 ID 更新一个隐藏的表单值。当输入的文本与自动完成列表中的结果不匹配时,如何将隐藏表单值设置为“0”?在这种情况下,我将创建一个新条目。
【问题讨论】:
标签: jquery autocomplete
我已经安装了 jQuery Autocomplete (UI 1.6rc2) 并且运行良好,当用户选择一个项目时,它会使用关联的 ID 更新一个隐藏的表单值。当输入的文本与自动完成列表中的结果不匹配时,如何将隐藏表单值设置为“0”?在这种情况下,我将创建一个新条目。
【问题讨论】:
标签: jquery autocomplete
我在自动完成功能中这样做了:
change: function(event, ui){
$(this).next("input[id^=person_id]").val('');
return false;
在用户选择选项并使用项目 ID 填充我的隐藏输入后,如果可见输入发生任何更改,隐藏输入值将被清除。像魅力一样工作!
【讨论】:
您还可以将“搜索”选项与自动完成功能结合使用。
search: function(event, ui){
$(this).next("input[id^=person_id]").val('');
}
似乎有效。它确实在延迟和 minlength 之后触发,但如果您将其设置为 minlength=0,它确实会很好地清除。
【讨论】:
我遇到了同样的问题...看起来当值不匹配时没有引发事件...但是,似乎找到了一些解决方法...
Xavier 来自this thread:的回复
selected: function() {
if(listItems.filter(”.” + CLASSES.ACTIVE)[0]){
return data && data[ listItems.filter("." + CLASSES.ACTIVE)[0].index ];
} else {
if (options.notFound){
options.notFound();
}
}
}
这不是我认为的最佳解决方案...还有其他想法吗? 是的,我也没有解决如何使用这个特定的解决方案:(
【讨论】:
哦,我想我找到了一个技巧,如何超越所有这些事件......
只需将此添加到 extraParams 以及发送到自动完成的其他参数
extraParams: {
x: function(){ $("#targetField").val(''); }
}
这只是在发送请求时清空该字段,如果没有找到结果或未选择任何内容并输入了一些新的自定义值,它就保持为空...
【讨论】:
根据评论线程here,这似乎是不可能的。我想我只是根据数据库检查输入的值,如果它不存在,则创建一个新值。
【讨论】:
$("#txtSearchProvider").autocomplete("../WebServices/PageMethods/AutoComplete.aspx",
{
minChars: 3,
formatItem: function(data, i, n, value) {
return value.split("-z-")[0];
},
formatResult: function(data, value)
{
return value.split("-z-")[0];
}
}
);
$("#txtSearchProvider").result(function(event, data, formatted) {
$("#txtSearchProviderHidden").val(data[0].split("-z-")[1]);
});
响应来自:../WebServices/PageMethods/AutoComplete.aspx
数据 1,Corp-z-29310 数据 2,Almazan 和 Barbara,LLP-z-35745 多斯桑托斯 Santos-z-36327 卡尔扎诺和萨尔扎诺-z-39295
【讨论】: