0

JQuery UI オートコンプリートを使用しています。MustMatch に必要だったので、次のように設定しました。

$('#MyAutoComplete').autocomplete({
    source: result,
    minLength: 1,
    change: function (event, ui) {
        if (!ui.item) {
            $('#MyAutoComplete').val('');
        }
    }
});

フィールドにデータが入力され、期待どおりに機能しているため、結果について心配する必要はありません。誰かがリストにない値を入力してフィールドをクリックすると、送信ボタンをクリックした場合を除いて、希望どおりにフィールドが消去されます。私の送信ハンドラーの簡略化されたバージョンは次のとおりです。

$('#MyButton').get(0).onclick = $('#MyForm').get(0).onsubmit = (function () {

    $('#MyForm').validate();
    var isValid = $('#MyForm').valid();

    if (!isValid) {
        return false;
    }
});

不適切なデータを含むフォーカスされたオートコンプリートから送信ボタンを直接クリックすると、オートコンプリートの変更前に送信イベントが発生します。したがって、不正なデータが送信されます。他のアクションを実行すると、送信が失敗する原因となる不正なデータがクリアされます (フィールドが必須であるため)。

これを回避する方法はありますか?

これらのそれぞれを送信イベントの一番上に追加しようとしました。どれも違いはありませんでした。

$('#MyAutoComeplete').data('autocomplete')._trigger('change');

$('#MyAutoComplete').blur();

$('#MyButton').focus();

コンボボックス機能には、使用しているスクリプトよりも新しいバージョンが必要ですか? 私がこれを取ると:

$('#MyAutoComplete').autocomplete({
                    source: result,
                    minLength: 1,
                    change: function (event, ui) {
                        if (!ui.item) {
                            $('#MyAutoComplete').val('');
                        }
                    }
                });

そして、これを次のようにします。

$('#MyAutoComplete').combobox({
                    source: result,
                    minLength: 1,
                    change: function (event, ui) {
                        if (!ui.item) {
                            $('#MyAutoComplete').val('');
                        }
                    }
                });         

次のエラーが表示されます。

JavaScript ランタイム エラー: オブジェクトはプロパティまたはメソッド 'combobox' をサポートしていません

私は使っている:

jQuery UI 1.8.7

4

1 に答える 1