3

一致するすべての入力にこのバインドされたイベントがあります。

$('input[name$="_keyword"]').each(function() {
    $(this).bind("propertychange keyup input paste", function(event){
    if ($(this).val() != '') {
        $(this).prevAll('select').attr('disabled', true);
    } else {
        $(this).prevAll('select').attr('disabled', false);
    }
    });
});

これにより、テキスト入力にテキストが入力されている場合、関連するドロップダウン メニューが無効になります。

ただし、入力の 1 つに誰かを_keyword入力して、関連するドロップダウン メニューを無効にし、HTML リセット ボタンを押すと、フォーム内のすべてのフィールドがクリアされますが、ドロップダウン メニューは有効になりません。リセットボタンがクリックされたときにこれらを有効にするにはどうすればよいですか?

<input type="reset" value="Reset"/>

JSFIDDLE

4

6 に答える 6

3

フォームのresetイベントにハンドラーを登録して、ドロップダウンを再度有効にすることができます。

 $('form').on('reset', function() { $('form select').removeAttr('disabled'); });
于 2012-09-11T03:26:17.803 に答える
2

propertychangeリセット ボタンのクリック ハンドラーを介して、バインド内のイベントの 1 つ (例: ) をトリガーする必要があります。

$('input:reset').click(function() {
  $('input[name$="_keyword"]').val('').trigger("propertychange");
});

作業フィドルを参照してください:

http://jsfiddle.net/GHpmh/1/

于 2012-09-11T03:47:20.883 に答える
1

resetフォームでイベントをリッスンし、そこで選択を有効にすることができます

$('form').on('reset', function() {
    $('select', this).prop({disabled: false});
});

デモ

于 2012-09-11T03:32:33.253 に答える
1

フォームのリセットは、リッスンしているイベントをトリガーしません。「リセット」イベントもバインドする必要があります。残念ながら、すべてのブラウザーがリセット イベントをフィールドにバブルするわけではないため、個々のフィールドではなく、フォーム レベルでそれをバインドする必要があります。

于 2012-09-11T03:26:27.670 に答える
1

リセット ボタンにクリック ハンドラーを追加して、それを行うにはどうすればよいでしょうか。例えば:

$("input[type=\"reset\"]").on("click", function(event) {
    $("select").attr('disabled', true);
})
于 2012-09-11T03:28:14.173 に答える
0

上記のいくつかの回答を組み合わせて、フォーム内の選択要素をリセットし、変更機能をトリガーするためにこれを行います

$('form').on('reset', function() { $('form select').val('all').trigger('change'); });

フォーム マークアップ内で HTML リセット ボタンを使用する

<input type="reset" id="reset" value="Reset">
于 2014-10-29T20:41:02.003 に答える