複数のフィールドの表示を切り替えるフォームがあるとします。また、フィールドが表示されていない場合は、その値を要求に含める必要はありません。
この状況にどのように対処しますか?
回答:
フォーム要素を無効に設定すると、サーバーへの送信が停止します。例:
<input disabled="disabled" type="text" name="test"/>
javascriptでは、次のような意味になります。
var inputs = document.getElementsByTagName('input');
for(var i = 0;i < inputs.length; i++) {
if(inputs[i].style.display == 'none') {
inputs[i].disabled = true;
}
}
document.forms[0].submit();
jQueryの場合:
$('form > input:hidden').attr("disabled",true);
$('form').submit();
.prop()
するに.attr()
は、代わりにを使用することをお勧めします。を使用してチェックまたは設定する.attr()
と、望ましくない結果が返される場合があります。yorchが何を参照していたかについてコメントする前に、jQueryのドキュメントをお読みください。
javascriptを使用してdisabled属性を設定できます。「送信」ボタンのクリックイベントは、おそらくこれを行うのに最適な場所です。
ただし、これはまったく行わないことをお勧めします。可能であれば、サーバーでクエリをフィルタリングする必要があります。これはより信頼性が高くなります。
非表示の親要素内のすべての要素または特定の要素を無効にする場合は、
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");
この例http://jsfiddle.net/gKsTS/は、非表示のdiv内のすべてのテキストボックスを無効にします
どうですか:
$('#divID').children(":input").prop("disabled", true); // disable
そして
$('#divID').children(":input").prop("disabled", false); // enable
非表示のdiv内のすべての子入力(選択、チェックボックス、入力、textareasなど)を切り替えるには。
:input
代わりにjQueryの疑似セレクターをinput
使用するselect
と、すべてのtextarea
要素を簡単に無効にすることもできます