我有一个可怕的问题,试图查看是否点击了使用某个ID的任何复选框。
复选框的一个例子是
<input name="our_list[]" value="AB1-A" type="checkbox" class="listheck" id ="AB1 OB 90xs r5Ty" />
<input name="our_list[]" value="AB1-B" type="checkbox" class="listheck" id ="AB1 OB 90xs r5Ty" />
<input name="our_list[]" value="AB1-C" type="checkbox" class="listheck" id ="AB1 OB 90xs r5Ty" />
<input name="our_list[]" value="AB1-D" type="checkbox" class="listheck" id ="AB1 OB 90xs r5Ty" />
<input name="our_list[]" value="AB2-A" type="checkbox" class="listheck" id ="AB2 OB 90xs r5Ty" />
<input name="our_list[]" value="AB2-B" type="checkbox" class="listheck" id ="AB2 OB 90xs r5Ty" />
<input name="our_list[]" value="AB2-C" type="checkbox" class="listheck" id ="AB2 OB 90xs r5Ty" />
<input name="our_list[]" value="AB2-D" type="checkbox" class="listheck" id ="AB2 OB 90xs r5Ty" />
我的最新脚本是
<script type="text/javascript">
$(document).ready(function() {
$('.listheck').click(function(){
var thisID = $(this).attr('id');
var checked = $('#'+thisID+':checkbox:checked').length;
alert(thisID+" Number checked:" + checked);
});
});
</script>
警报显示复选框的ID,但即使检查了
,选中的值也始终为0我知道每个元素id应该是唯一的,这可能是问题,或者可能是id中有空格但是这是用于已经由其他人开发的系统,不幸的是我无法改变方式它有效。
我在这里尝试了很多不同的解决方案,但似乎没有人做我需要的。
任何帮助表示赞赏
答案 0 :(得分:1)
ID应该是唯一的。但如果你不能改变代码,这应该有效:
$(document).ready(function() {
$('.listheck').click(function(){
var checkedTotal = {};
$(".listheck").each(function(index, el) {
var id = $(el).attr("id");
if ( $(el).prop("checked") ) {
if ( !checkedTotal[id] ) {
checkedTotal[id] = 1;
}
else {
checkedTotal[id] = checkedTotal[id]+1;
}
}
});
var msg = "";
for ( var p in checkedTotal ) {
msg += p + " # Checked: " + checkedTotal[p] + "\n";
}
alert(msg);
});
});
答案 1 :(得分:0)
而不是通过id查找。尝试找到将这些复选框分组的其他内容。尝试通过name
属性而不是id
进行查找。根据规范,Jquery正在使用一个js方法,它只期望一个元素具有特定的id。所以它可能只返回第一个。如果无法修复结构,请使用id以外的其他选择器。
答案 2 :(得分:0)
该代码仅检查具有给定id
的第一个元素(因为id
对于元素是唯一的)。
实际上,如果您尝试here,则会得到当前只选中一个复选框的结果。
您可以使用.each
方法循环浏览所有当前选中的复选框,并计算其中有多少具有给定的id
。
$(document).ready(function() {
$('.listheck').click(function(){
var thisID = $(this).attr('id');
var checked = 0;
$('.listheck:checked').each(function(index, val) {
if ($(this).attr('id') == thisID) {
checked++;
}
});
alert(checked + ' checkbox with id ' + thisID + ' are checked');
});
});
查看工作示例here
答案 3 :(得分:0)
$('[id="AB1 OB 90xs r5Ty"]').length