如何阻止用户插入不在自动填充源中的值?
var items= [
{ "label": "Account Administration" },
{ "label": "Applications"},
{ "label": "General Information" },
{ "label": "Hardware" },
{ "label": "Network" },
{ "label": "Operating System" },
{ "label": "Remote Connectivity" }
];
$(".autocomp").autocomplete({ source: items});
答案 0 :(得分:0)
在提出一个例子时,我想出来了。
$(".autocomp").blur( function(event){
s = this.value.toUpperCase();
var r = "";
for(var i=0;i<items.length; i++)
{
if(s===items[i].label.toUpperCase()){ r= items[i].label; break;}
}
this.value=r;
});
http://jsfiddle.net/DAElectric/bSPN2/
但有更好的方法吗?
答案 1 :(得分:0)
我通过添加隐藏的输入文本来解决这个问题。然后在自动完成更改时,我将所选值设置为隐藏字段。像这样:
...
$(".autocomp").autocomplete
({
source: items,
change: function(){$('hidden_field').val(ui.item.label);}
});
这样可以确保隐藏字段仅包含有效的自动建议值,如果已选择任何值,则不会包含任何内容。
另外你可以测试
$('hidden_field').val() == '';
自动完成模糊,然后转发用户