如何保存复选框值和状态

时间:2015-06-19 21:45:18

标签: javascript

我需要在页面上保存值以及复选框的状态;所以我可以在提交时检查是否已取消选中复选框并使用comparestatus()函数将其值用于进一步的逻辑。我试过这个,但我得到的错误是没有定义变量periodCHK。

<input type="checkbox" name="Periods" value="25301601" >
<input type="checkbox" name="Periods" value="25301602"  checked>

<script type="text/javascript">
    $j(document).ready( function() {
        var periodCHK;
        $j(":checkbox").each( function() {                          
            periodCHK["$j(this.id).val()"]=($j(this).is(':checked'));
        } );

        console.log(periodCHK);

        function comparestatus() {
            var periodstring; 
            if (!$j(this).is(':checked')) {
                // if this one was checked before, grab it and make a string
                if (window.periodCHK["$j(this.id).val()"]) 
                {
                    periodstring+=["$j(this.id).val()"] + ",";
                }
            }
        }
    } );
</script>

2 个答案:

答案 0 :(得分:1)

您在函数中声明var name = (function(name) { return name })(function() { return 'Jane'; }()); console.log(name); // => Jane ,因此它不会成为var periodCHK的属性。您在window内使用window.periodCHK进行调用的地方,应该只是comparestatus。这应该有效,因为函数periodCHK是在声明comparestatus的同一函数中声明的。它们属于同一范围。

答案 1 :(得分:1)

您的periodCHK变量是(正确地)使用document.ready模块中的var声明的,因此它只存在于该函数范围内。您只需通过以下方式访问它:

if (periodCHK["$j(this.id).val()"])

(注意:为了让您的变量可以在全局范围内访问(window),您必须在没有var的情况下声明它,或者明确地将其分配给窗口。但是,这通常是不好的做法。)