代码分析
$("#<%= ibSubmit.ClientID%>").click(function() {
var flag = true;
//alert($("table[id^=ctl]").length);
//创建一个checked的arr数组,用于存储每个radiobutton的checked情况
var arr = new Array;
$("table[id^=ctl] input[type=radio]").each(function(i) {
arr.push(this.checked);
});
//然后再创建一个arrTrue数组,用于过滤false的arr数组
var arrTrue = new Array;
$.each(arr, function(i) {
if (arr[i] == true) {
arrTrue.push(arr[i]);
}
});
//当然也可以用grep函数,来简化过滤arr数组操作
//arr = $.grep(arr, function(n, i) {
//return n == true;
//});
var groupLen = Math.floor($("table[id^=ctl]").length + 1 / 3);
//最后,简单一点吧,只有判断arrTrue的长度是否为11,就可以。
//因为是一共33个radiobutton,每3个为一组,规则又是一组中3选1, //所以全部选择肯定有11个radiobutton被选中。
if (arrTrue.length != groupLen) {
flag = false;
}
return false;
});
完整代码
$(function() {
$("#<%= ibSubmit.ClientID%>").click(function() {
var flag = true;
var arr = new Array;
$("table[id^=ctl] input[type=radio]").each(function(i) {
arr.push(this.checked);
});
arr = $.grep(arr, function(n) {
return n == true;
});
var groupLen = Math.floor($("table[id^=ctl]").length + 1 / 3);
if (arr.length != groupLen) {
flag = false;
}
return false;
});
});
最后附上生成Table代码:(两种生成方法,JQuery版本,C#版本) (可看可不看)
jQuery版本
var array = ["XXXX",""XXXX","XXX"];
$.each(array, function(i) {
table.append("<tr><td>"+
"<input id='cbl_" + i + "'" + " type='checkbox' title='" + array[0] + "' />" +
"</td></tr>");
});