我有一段时间以来一直工作正常的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定制,我不知道它出了什么问题。提前感谢您的帮助。
答案 0 :(得分:0)
您的javascript代码必须位于正文标记的顶部或顶部,但每次调用locations
时toggleBoxes
变量locations
都必须是全局的{{1}}将是未定义的。
答案 1 :(得分:0)
我想你在文档的某处(可能是“GR”)有重复的id。尝试使用前缀以避免此问题。
答案 2 :(得分:0)
答案 3 :(得分:0)
您的代码没问题。我在本地测试它并没有问题。