代码之家  ›  专栏  ›  技术社区  ›  Peter Stegnar

jquery自动完成“无结果”不可点击或选择

  •  2
  • Peter Stegnar  · 技术社区  · 16 年前

    如何正确处理“无结果”案件 jQuery Autocomplete “无结果”不可点击或选择的功能?

    在“分析”部分中,我添加了“无结果”项:

     parse: function(data) {
         var array = new Array();
         if (!data || data.length == 0) {
             array [0] = { data: { Title: "No results" }, value: "No results", result: "No results"};
         }
     }
    

    所以当没有结果时,它只显示“没有结果”。但是它是可选的,并且是可点击的,这是不正常的,因为这个值随后被传递给文本输入。

    编辑
    完整的javascript部分:

    <script type="text/javascript">
                    var NoResult= "No result";
                    $(function() {
                        $("#txtTextAnimal").autocomplete('<%= Url.Action("Find", "Animal") %>', {
                            dataType: 'json',
                            delay: 100,
                            parse: function(data) {
                                var rows = new Array();
                                for (var i = 0; i < data.length; i++) {
                                    rows[i] = { data: data[i], value: data[i].Title, result: data[i].Title };
                                }
                                if (rows.length == 0) {
                                    rows[0] = { data: { Title: NoResult}, value: "", result: NoResult};
                                }
                                return rows;
                            },
                            formatItem: function(item) {
                                return item.Title;
                            }
                        }).result(function(event, item) {
                            if (item.Title != NoResult) {
                                $("#hidAnimalId").val(item.Id);
                                $("#hidAnimalId").closest("form").submit();
                            }
    
                        });
                    });
    
                </script>
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   dan richardson    16 年前

    我不确定您使用的是哪个自动完成插件,但在某个地方必须有一个“点击”处理程序?在这个函数中,您可以只检查“无结果”。

    或者,您可以在没有数据的情况下将数组值设置为Nothing吗?所以…

    var array = new Array();
    if (!data || data.length == 0) {
      array [0] = { data: { Title: "No results" }, value: "", result: "No results"};
    }
    

    更新在这里: 您可以使用结果选项…这是未测试的,因此可能需要进行一些修补

    jQuery('#yourTextbox').result(function(event, data, formatted) {
      if (!data || formatted == 'No Result'){
        return false;
      } else {
        // return true or some other logic?
      }
    });