2017-05-29 12 views
0

私は複数のフォームを持つページがあるとします。 1つのフォームに情報が入力されると、他のフォームのすべての要素を無効にする必要があります。現在使用中のフォーム以外のすべてのフォーム要素を無効にする

私はその後、:inputセレクタを使用して、各入力要素を取得し、それにdisabledプロパティを適用し、.not()を使用して、現在の1以外のすべてのフォームを選択しようとしたが、情報が入力されると、すべてのフォームのすべての要素が無効になってもらいますどの形式が使用されたかにかかわらず。

$('form').on("input", ":input", function() { 
    $('form').not(this).each(function() { 
     $(this).find(':input').prop('disabled', true); 
    }); 
    }); 

Fiddle Link(非常に汚いが、ちょうど証明する) 情報は、トップフォームの要素のいずれかに入力されると、下のフォーム内のすべての要素を無効にする必要があります。

答えて

1

thisその場合、その代理人は入力イベントを取得した入力フィールドです。 not()ロジックを実行する前に、それを最も近いもの( 'フォーム')にする必要があります。

$('form').not($(this).closest('form')) 
+0

これは完全に感謝しています!私は前に '' form ''のために '' not(this) ''がこの形式ではないと見なされると思いました。 私は '.each()'の使用を避けるためにこれをさらに単純にできました: '$( 'form')。not($(this).closest( 'form'))find( ':input')。 prop( 'disabled'、true); ' もう一度お手伝いをしてくれてありがとう! – cw1998

+0

ええ、それぞれの必要はありません:) – Taplar

関連する問題