jQuery自动完成:确定输入的文本是否不匹配

时间:2008-11-30 04:08:15

标签: jquery autocomplete

我已经启动jQuery自动完成功能(UI 1.6rc2)并且正常运行,当用户选择一个项目时,它会使用相关ID更新隐藏的表单值。当输入的文本与自动完成列表中的结果不匹配时,如何将隐藏的表单值设置为“0”?在这种情况下,我将创建一个新条目。

6 个答案:

答案 0 :(得分:3)

我在自动完成功能中执行了此操作:

change: function(event, ui){
   $(this).next("input[id^=person_id]").val('');
  return false;

用户选择该选项后,它会使用项目ID填充我的隐藏输入,如果可见输入发生任何更改,则会清除隐藏的输入值。像魅力一样工作!

答案 1 :(得分:2)

您还可以在自动填充中使用“搜索”选项。

search: function(event, ui){
   $(this).next("input[id^=person_id]").val('');
}

似乎工作。它会在延迟和最小长度之后触发,但如果你将它设置为minlength = 0,它确实会很清楚。

答案 2 :(得分:1)

我遇到了同样的问题......看起来当价值不匹配时没有事件上升......但是,似乎找到了一些解决方法......

来自this thread:

的回复中的Xavier
selected: function() {
  if(listItems.filter(”.” + CLASSES.ACTIVE)[0]){
    return data && data[ listItems.filter("." + CLASSES.ACTIVE)[0].index ];
  } else {
    if (options.notFound){
      options.notFound();
    } 
  }
}

这不是我认为最好的解决方案......还有其他想法吗? 是的,我没有解决如何使用这个特定的解决方案:(

答案 3 :(得分:1)

是的,我想我找到了一个超越所有这些事件的技巧...... 简单地说,将此添加到extraParams以及发送到自动填充的其他参数

extraParams: { 
    x: function(){ $("#targetField").val(''); }
}

这个只是在发送请求时清空字段,如果没有找到结果或者没有选择任何内容并且输入了一些新的自定义值,它就会保持为空...

答案 4 :(得分:0)

根据评论主题here,似乎不可能。我想我只是检查数据库输入的值,如果它不存在,则创建一个新值。

答案 5 :(得分:-1)

$("#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 Dos Santos Santos-z-36327 卡尔扎诺&萨尔扎诺-Z-39295