如何防止在自动填充字段中使用无效值?

时间:2011-02-26 19:19:28

标签: jquery-ui autocomplete jquery-ui-autocomplete

如何阻止用户插入不在自动填充源中的值?

var items=  [
    { "label": "Account Administration" },
    { "label": "Applications"},
    { "label": "General Information" },
    { "label": "Hardware" },
    { "label": "Network" },
    { "label": "Operating System" },
    { "label": "Remote Connectivity" }
];
$(".autocomp").autocomplete({ source: items});

2 个答案:

答案 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() == '';

自动完成模糊,然后转发用户