1

タイプアヘッドを使用して名前を取得し、名前に対応する 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
 });
4

1 に答える 1

1

関数を user フィールドの blur イベントにバインドできます。そのため、ユーザーが別のフォーム要素に変更を加えるとすぐに、それが空白のままである場合、先行入力フィールドがクリアされます。

$('#user-field').blur(function (e) {
   if(this.val() === ''){
        $('#typeahead-field').val(''); // Clear typeahead
   }
});
于 2012-12-19T20:25:41.277 に答える