选中“任何”复选框后,取消选中组中的所有复选框,以便再次工作

时间:2011-02-14 22:23:16

标签: javascript checkbox getelementbyid

我有一段时间以来一直工作正常的JS,我不知道它为什么现在不再工作了。当选中任意数量的其他复选框时,应该取消选中Any(默认选中),如果选中Any,则取消选中要检查的内容。

/**
 * Define a set of checkbox groups
 */
var locations = new Array('A', 'P', 'PR', 'GR', 'MC', 'F', 'S', 'L', 'LU', 'E');
/**
 * Checking the "anyId" checkbox clears the rest of the group.  Checking any other clears the "anyId" checkbox.
 */
function toggleBoxes( el, anyId, group ) {
    var i;
    if ( el.id == anyId ) {
        for( i = 0; i < group.length; i++ ){
            var cb = document.getElementById(group[i]);
            cb.checked = false;
        }
    } else {
        var cb = document.getElementById(anyId);
        cb.checked = false; 
    }
}

这是HTML

<div class="input">
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='anyLocation' name="ts-in_pr" value="any" type="checkbox" checked>Any</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='A' class="geoloc" name="ts-in_pr[]" value="AR" type="checkbox">Ao</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='P' class="geoloc" name="ts-in_pr[]" value="PI" type="checkbox">Pa</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='PR' class="geoloc" name="ts-in_pr[]" value="PO" type="checkbox">Po</p>      
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='GR' class="geoloc" name="ts-in_pr[]" value="GR" type="checkbox">Gr</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='MC' class="geoloc" name="ts-in_pr[]" value="MC" type="checkbox">MC</p>                                                                  
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='F' class="geoloc" name="ts-in_pr[]" value="FI" type="checkbox">Fi</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='S' class="geoloc" name="ts-in_pr[]" value="SI" type="checkbox">Si</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='L' class="geoloc" name="ts-in_pr[]" value="LI" type="checkbox">Li</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='LU' class="geoloc" name="ts-in_pr[]" value="LU" type="checkbox">Lu</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='E' class="geoloc" name="ts-in_pr[]" value="El" type="checkbox">E</p> 
        </div>

当检查任何其他框时,Any会被取消检查,但是当检查它时,它只取消选中右下方的三个框(其值为Ao,Pa和Po)。所有其他人都会被检查,当他们手动取消选中时,他们也取消选中Any(如果已选中)。我有这个JS定制,我不知道它出了什么问题。提前感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

您的javascript代码必须位于正文标记的顶部或顶部,但每次调用locationstoggleBoxes变量locations都必须是全局的{{1}}将是未定义的。

查看此处的示例:http://jsfiddle.net/ArtBIT/DBanG/

答案 1 :(得分:0)

我想你在文档的某处(可能是“GR”)有重复的id。尝试使用前缀以避免此问题。

答案 2 :(得分:0)

这是一个工作示例。我稍微简化了你的函数参数。我看到的代码不需要第二个和第三个参数,因为它们是常量。

http://jsfiddle.net/srEuM/

鲍勃

答案 3 :(得分:0)

您的代码没问题。我在本地测试它并没有问题。