ここに私のコードがあります:
$("#product1 :checkbox").click(function(){
$(this)
.closest('tr') // Find the parent row.
.find(":input[type='text']") // Find text elements in that row.
.attr('disabled',false).toggleClass('disabled') // Enable them.
.end() // Go back to the row.
.siblings() // Get its siblings
.find(":input[type='text']") // Find text elements in those rows.
.attr('disabled',true).removeClass('disabled'); // Disable them.
});
.attr('disabled',false);
を切り替えるにはどうすればよいですか?
Googleで見つけられないようです。
$('#el').prop('disabled', function(i, v) { return !v; });
.prop()
メソッドは2つの引数を受け入れます。
したがって、この場合、インデックス(i)と現在の値(v)を提供する関数を使用し、現在の値の反対を返したため、プロパティの状態が反転します。
Iguessブラウザーの完全な比較可能性を取得するにはdisabled
は値disabled
で設定するか、削除する必要があります!
ここに、私が作成した小さなプラグインを示します。
(function($) {
$.fn.toggleDisabled = function() {
return this.each(function() {
var $this = $(this);
if ($this.attr('disabled')) $this.removeAttr('disabled');
else $this.attr('disabled', 'disabled');
});
};
})(jQuery);
リンクの例 。
編集:連鎖性を維持するためにサンプルのリンク/コードを更新しました!
編集2:
@ lonesomedayコメントに基づいて、ここに拡張バージョンがあります。
(function($) {
$.fn.toggleDisabled = function(){
return this.each(function(){
this.disabled = !this.disabled;
});
};
})(jQuery);
$( '#checkbox')。click(function(){ $( '#submit')。attr( 'disabled'、!$(this).attr ( 'checked')); });
チェックボックスをクリックするだけで更新される別の簡単なオプション。
HTML:
<input type="checkbox" id="checkbox/>
<input disabled type="submit" id="item"/>
jQuery:
$('#checkbox').click(function() {
if (this.checked) {
$('#item').prop('disabled', false); // If checked enable item
} else {
$('#item').prop('disabled', true); // If checked disable item
}
});
動作中: link
しばらくして、@ arneのおかげで、入力を無効にするか非表示にするか、有効にするか表示するかを処理する同様の小さな関数を作成しました。
function toggleInputState(el, on) {
// 'on' = true(visible) or false(hidden)
// If a field is to be shown, enable it; if hidden, disable it.
// Disabling will prevent the field's value from being submitted
$(el).prop('disabled', !on).toggle(on);
}
次に、jQueryオブジェクト($( 'input [name = "something"]'など))を次のように単純に切り替えます:
toggleInputState(myElement, myBoolean)
attr
のコールバック構文を使用すると、これは非常に簡単です。
$("#product1 :checkbox").click(function(){
$(this)
.closest('tr') // find the parent row
.find(":input[type='text']") // find text elements in that row
.attr('disabled',function(idx, oldAttr) {
return !oldAttr; // invert disabled value
})
.toggleClass('disabled') // enable them
.end() // go back to the row
.siblings() // get its siblings
.find(":input[type='text']") // find text elements in those rows
.attr('disabled',function(idx, oldAttr) {
return !oldAttr; // invert disabled value
})
.removeClass('disabled'); // disable them
});