使用复选框更改jQuery.change()方法中正在更改的变量的值

时间:2015-01-20 08:43:33

标签: javascript jquery html checkbox

你好每一个我都想在编程方面做得更好,如果你能帮助我,我将不胜感激。我想要做的是设置变量var easymode = false; ..然后我想检查是否通过复选框选择了easymode选项。我使用jQuery change()方法,所以当用户点击和关闭框时,我可以动态获取一个布尔值。在change方法中我想将easymode的值更改为true或false。我知道我做得不对if(easymode){ console.log('true'); } 当检查easymode时,它不会变为真。

$(document).ready(function(){

    var easymode = false;
    console.log(easymode)

        $("input[type=checkbox]").change(function(){
            if($(this).val() == "easy" && $(this).is(':checked')){
                 easymode = true;
            }
            else if($(this).val() == "easy" && !$(this).is(':checked')){
                // alert('not easy mode');
                 easymode = false;
            }

            if($(this).val() == "hard" && $(this).is(':checked')){
                alert('hard mode')
            }
            else if($(this).val() == "hard" && !$(this).is(':checked')){
                alert('not hard mode');
            }
        })

    if(easymode){
        console.log('true');
    }
    )
});

Easy <input type="checkbox" id="justchange" value="easy"><br>
Hard <input type="checkbox" id="fullprice" value="hard">
<input type="text" id="textbox1">

2 个答案:

答案 0 :(得分:0)

我认为你正在寻找这样的东西:

当用户点击easy时,将启用easy模式(easymode = true)并且取消选中hard。当用户点击很难时,easymode = false并且取消选中easy。

当然,您可以使用无线电而不是复选框,并默认使用选中/取消选中的功能。

$(document).ready(function(){
    var easymode = false,
        easy = $('#justchange'),
        hard = $('#fullprice');

    easy.on('click', function(){
        if($(this).is(':checked')){
            easymode = true;
            hard.prop('checked', false);
        }else{
            easymode = false;
        }
    });

    hard.on('click', function(){
        if($(this).is(':checked')){
            easymode = false;
            easy.prop('checked', false);
            alert('hard mode');
        }else{
            alert('not hard mode');

        }
    });
});

还有jsfiddle:http://jsfiddle.net/xfh32v2o/

答案 1 :(得分:0)

您的代码中有一个错误,关闭了一个额外的括号。此外,我还没有添加,但是当你勾选其中一个时,你可能想要解开另一个框。

$(document).ready(function(){

        var easymode = false;
        console.log(easymode);

            $("input[type=checkbox]").on("change", function(){
                if($(this).val() == "easy" && $(this).is(':checked')){
                     easymode = true;
                     alert('easy mode');
                }
                else if($(this).val() == "easy" && !$(this).is(':checked')){
                     alert('not easy mode');
                     easymode = false;
                }

                if($(this).val() == "hard" && $(this).is(':checked')){
                    alert('hard mode');
                }
                else if($(this).val() == "hard" && !$(this).is(':checked')){
                    alert('not hard mode');
                }
            });

        if(easymode){
            console.log('true');
        }
    });