选中复选框后禁用和启用按钮

时间:2018-11-06 14:49:22

标签: javascript jquery

我的表单上有一个默认情况下处于禁用状态的按钮

<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上检查了其他示例,但是这些似乎都无法解决我的问题。

3 个答案:

答案 0 :(得分:1)

http://api.jquery.com/prop/

这是属性和属性之间的差异,只是在开发过程中,我们几乎不会将差异视为相同。

答案 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){