タイプアヘッドを使用して名前を取得し、名前に対応する ID で非表示フィールドを更新しています。私のフォームでは、名前は空白のままにすることができますが、必須ではありません。
先行入力関数にカスタム エラー チェックを追加する方法はありますか? たとえば、フォームへの入力を開始してユーザーを入力/選択した後、気が変わって空白のままにしたいと思います。この時点で、ユーザー ID は非表示フィールドに既に追加されているため、名前フィールドを空白のままにしても、フォームはユーザー ID とともに渡されます。
送信時にいつでもエラーチェックを行うことができると思いますが、ネイティブ API に追加する方法があるかどうか知りたいです。
私のコードは次のとおりです。
$('#name_field').typeahead({
minLength: 3,
source: function (query, process){
$.get('/url/getsource', {query: query}, function (data) {
names = [];
map = {};
$.each(data, function (i, name) {
map[name.uName] = name;
names.push(name.uName);
});
process(names);
});
},
matcher: function (item) {
if (item.toLowerCase().indexOf(this.query.trim().toLowerCase()) != -1) {
return true;
}
},
sorter: function (items) {
return items.sort();
},
highlighter: function (item) {
var regex = new RegExp( '(' + this.query + ')', 'gi' );
return item.replace( regex, "<strong>$1</strong>" );
},
updater: function (item) {
selectedID = map[item].id;
$('#id_field').val(selectedID);
return item;
}
});
次のようなものを追加できることを望んでいました
$('#name_field').typeahead({
myCustom: function (){
if($('#name_field').val() == ''){
$('#id_field').val('');
},
rest,
of the,
function
});