jQuery自动完成“无结果”无法点击或可选择

时间:2010-01-21 11:00:20

标签: jquery autocomplete

如何在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 个答案:

答案 0 :(得分:3)

我不确定您使用的是哪个自动完成插件,但某处必须有“点击”处理程序?在此功能中,您只需检查“无结果”即可。

或者,您可以在没有数据时将数组值设置为空吗?所以......

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