【发布时间】:2018-05-07 17:22:29
【问题描述】:
我有一个基本的 if/else 语句,用于检查是否检查了两个输入,如果是,则“禁用”的第三个复选框状态变为 false 并且可以检查。我希望一旦选中,如果其他复选框未选中,则此复选框将再次未选中,但它只是在维护检查时被禁用。
我的代码:
$("#cvLinkedInAssessmentCheck :input, #rolePlayingTalentCheck :input").change(function(){
if( $(this).is(':checked') ){
$("#minutosTalentoCheck :input").attr("disabled", false);
$("#minutosTalentoCheck").css("opacity", "1");
} else {
$("#minutosTalentoCheck").prop('checked', false);
$("#minutosTalentoCheck :input").attr("disabled", true);
$("#minutosTalentoCheck").css("opacity", "0.3");
}
})
基本上,else语句中的这一行不起作用,我也试过用“attr”代替,但没有运气:
$("#minutosTalentoCheck").prop('checked', false);
【问题讨论】:
-
因此您的 if 逻辑需要检查两个输入的
checked状态,而不仅仅是更改的那个。 -
另外作为旁注,不要这样做:
$(this).is(':checked')这可以只是this.checked具有相同的结果 -
$("#minutosTalentoCheck :input").attr("disabled", true);也有点令人困惑。通过您的代码,您尝试在minutosTalentoCheck上将选中的属性设置为 false,这表示它是一个单选框或复选框。但是您随后转身尝试找到要禁用的嵌套输入元素。单选框/复选框不能有嵌套的子项 -
我的错,我将 (":input") 添加到该行以检查它是否有效并将其留在那里。我仍然不明白为什么它会起作用,因为我希望它禁用复选框,而不是取消选中它。
标签: jquery if-statement checkbox