我需要一些帮助,因为我被卡住了。
基本上我有这个:
$(function() {
$('.turn_on').on("click", function () {
var checked = $(this).is(':checked');
var $otherChecks = $('.check_1, .check_2');
$otherChecks.removeAttr('disabled', checked);
});
});
$('.turn_on').change(function () {
if(this.checked){
var $otherChecks = $('.check_1, .check_2');
$otherChecks.removeAttr('disabled', checked);
}else{
var checked = $(this).is(':checked');
var $otherChecks1 = $('.check_1, .check_2');
$otherChecks1.removeAttr('disabled', checked);
}
});
<form method="post">
<label class="checkbox"><input type="checkbox" name="turn_on" value="turn_on" class="turn_on">Turn on</label>
<br>
<label class="checkbox"><input type="checkbox" name="check_1" value="check_1" class="check_1" disabled>Option 1</label>
<label class="checkbox"><input type="checkbox" name="check_2" value="check_2" class="check_2" disabled>Option 2</label>
<button type="submit" class="btn btn-primary" name="submit">Save</button>
</form>
第一个脚本工作正常,但带有“更改”的脚本不起作用。 基本上这是做什么的,当用户选中“turn_on”框时,它“无法使用”所有其他复选框。
我也有正确的所有div和脚本。 只是代码不适用于变更。
答案 0 :(得分:0)
怎么样:
$('.turn_on').on('change', function(){
if($(this).prop("checked")){
var $otherChecks = $('.check_1, .check_2');
$otherChecks.removeAttr('disabled', checked);
}else{
var checked = $(this).is(':checked');
var $otherChecks1 = $('.check_1, .check_2');
$otherChecks1.removeAttr('disabled', checked);
}
});
如果你说代码有效,但改变功能没有?尝试上面的代码,并评论是否仍有问题?
你错过了&#34;这个&#34;
周围的$()编辑 - 新的答案。 当启用/禁用时,你应该使用prop()insted - 我为你创建了一个小提琴,它在那里检查和取消选中。
$(function() {
$('.turn_on').on('change', function(){
if($(this).prop("checked")){
var $otherChecks = $('.check_1, .check_2');
$otherChecks.prop('disabled', false);
}else{
console.log('unchecked');
var checked = $(this).is(':checked');
var $otherChecks1 = $('.check_1, .check_2');
$otherChecks1.prop( "disabled", true );
}
});
});
如果我误解了你,你仍然希望它总是删除残疾人,那么只需将其设置为true,而不是false。 另外,如果你想删除复选标记,只需支持(&#34;检查&#34;,false); 测试的小提琴在这里:https://jsfiddle.net/embtpspL/1/