如何在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>
答案 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?
}
});