Как предотвратить использование недопустимым значением в поле автозаполнения? - PullRequest
0 голосов
/ 26 февраля 2011

Как запретить пользователю вставлять значение, которого нет в источнике автозаполнения?

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 голосов
/ 03 марта 2011

Я столкнулся с этой проблемой, добавив скрытый ввод текста. Затем при изменении автозаполнения я установил выбранное значение в скрытое поле. Примерно так:

...
$(".autocomp").autocomplete
({
   source: items,
   change: function(){$('hidden_field').val(ui.item.label);}
});

таким образом вы гарантируете, что скрытое поле будет содержать только действительные автоматически предложенные значения или ничего, если какое-либо из них было выбрано.

Кроме того, вы можете проверить

$('hidden_field').val() == '';

при автозаполнении размытия, а затем вызывает аллергию у пользователя

0 голосов
/ 26 февраля 2011

Хорошо, придумав пример, я понял это.

$(".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/

Но есть ли лучший способ сделать это?

...