我的表单上有一个默认情况下处于禁用状态的按钮
<input disabled type="submit" value="" name="subscribe" id="mc-embedded-subscribe" class="subscribe__button">
我还有一个optin复选框:
<label class="subscribe__optin">
<input id="optin" type="checkbox" value="true" name="optin"> Ja, ik ga akkoord met de privacyverklaring
</label>
想法是,如果选中此复选框,则该按钮必须是可单击的。但是,如果在选中该复选框后再次取消选中该复选框,则必须禁用该按钮。
我的jQuery代码是:
$("#optin").on("change", function(e){
if($("#optin").attr("checked")){
$("#mc-embedded-subscribe").attr('disabled','disabled');
console.log('checked');
} else {
$("#mc-embedded-subscribe").removeAttr('disabled');
console.log('not checked');
}
});
当我单击复选框时,我总是在控制台中看到“未选中”。 我在这儿做错了什么? 我已经在stackoverflow上检查了其他示例,但是这些似乎都无法解决我的问题。
答案 0 :(得分:1)
这是属性和属性之间的差异,只是在开发过程中,我们几乎不会将差异视为相同。
答案 1 :(得分:0)
已经找到了解决方案。似乎.attr()是问题所在。我必须使用.prop()
$("#optin").on("change", function(e){
if($("#optin").prop("checked")){
$("#mc-embedded-subscribe").removeAttr('disabled');
console.log('enabled');
} else {
$("#mc-embedded-subscribe").attr('disabled','disabled');
console.log('disabled');
}
});
答案 2 :(得分:0)
代替使用
if($("#optin").attr("checked")){
尝试:
if($(this)[0].checked){