ページに2 つ<fieldset>
の s がありますが、そのうちの 1 つは、ユーザーの選択に応じてすべての要素を無効にする必要があります。
フィールドセットには、テキスト入力、選択、およびリンクが含まれています。それらを1つずつ無効にする代わりに、それらすべてを無効にする方法はありますか?
子セレクターの使用についてはどうですか?
$("#myfieldeset").children().attr("disabled", "disabled");
子の選択をフィルタリングすることもできます。
$("#myfieldeset").children("a,input");
入力要素を無効にするフィールドセットに class="disableMe" を設定すると仮定すると、次のコードは必要なことを行う必要があります。
$('fieldset.disableMe :input').attr('disabled', true)
なぜあなただけを使用しないのですか:
$("#myfieldeset").attr("disabled", "disabled");
それは私のために働いた。すべての子入力を適切に無効にしました。
編集: disabled 属性は、HTML5 でのみ fieldset 要素に適用できることに注意してください (merryprankster のコメントを参照)。奇妙なことに、Chrome や Internet Explorer (IE7 および IE8 でテスト済み) など、Firefox や Opera 以外のブラウザーでも動作します。
他の人が投稿したものに加えて:
.prop()
の代わりに使用.attr()
:
$('#myfieldset').prop('disabled',true)
DOMに関してはより正確です。
また、検証ではうまく機能しないようです。firefox と chrome の両方で、無効なフィールドセットに「必須」入力が入力されていないフォームを送信することはできませんが、フォームを完了する方法についての指示もありません。
何らかの理由でフィールドセットに ID を追加できない場合 (通常はこれが推奨されます)、いつでもこれを実行して、すべての子要素を非表示にすることができます。
$('fieldset:first > *').attr('disabled','disabled');