【问题标题】:jQuery Autocomplete: Determining if entered text is not a matchjQuery自动完成:确定输入的文本是否不匹配
【发布时间】:2010-09-24 14:43:21
【问题描述】:

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

【问题讨论】:

    标签: jquery autocomplete


    【解决方案1】:

    我在自动完成功能中这样做了:

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

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

    【讨论】:

      【解决方案2】:

      您还可以将“搜索”选项与自动完成功能结合使用。

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

      似乎有效。它确实在延迟和 minlength 之后触发,但如果您将其设置为 minlength=0,它确实会很好地清除。

      【讨论】:

        【解决方案3】:

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

        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();
            } 
          }
        }
        

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

        【讨论】:

          【解决方案4】:

          哦,我想我找到了一个技巧,如何超越所有这些事件...... 只需将此添加到 extraParams 以及发送到自动完成的其他参数

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

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              【解决方案6】:
              $("#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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2017-09-22
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-11-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多