[英]loop through html table and check if a checkbox is checked or not
我在这里尝试做的是验证HTML表。 在继续之前,我需要至少检查一个复选框。 它正在做它需要做的事情,除非我没有选中复选框。
它通过HTML表上的数据计数循环警报“无法找到”。 我怎样才能让它变得更好? 我需要在表内循环,以便在选中复选框的同一行上获取数据。
JS
$('#dataTable').find('tr').each(function () {
var row = $(this);
if (row.find('input[type="checkbox"]').is(':checked') ) {
alert "found"
//im getting data here.
});
}else{
alert "NOthing found"
};
});
无需循环任何东西。 只需使用您的选择器在dataTable中查找已选中的复选框。 如果存在,则满足您的“真实”条件。
if ($('#dataTable input[type="checkbox"]:checked').size()) {
// Proceed
}
现在,如果您想对“已检查”行中的数据执行某些操作,您可以执行以下操作:
var checkedItems = $('#dataTable input[type="checkbox"]:checked').each(function() {
// Do something with the row
console.log($(this).parent('tr').find('.data-selector').val());
});
if (!checkedItems.size()) {
// Nothing was checked
}
Likeso你将为每一个检查行执行你的代码,如果没有检查行,你将执行你认为合适的,没有太多资源浪费
var is_table_empty = true;
jQuery('#dataTable').find('input[type="checkbox"]:checked').each(function(){
var row = jQuery(this).closest("tr");
//do what needs to be done to an active row
is_table_empty= false;
});
if(is_table_empty)
{
//do what you need to do if nothing is clicked
}
尝试与您的代码相同。
var checkFound = false;
$('#dataTable').find('tr').each(function() {
var row = ;
if (!checkFound && $(this).find('input[type="checkbox"]').is(':checked')) {
checkFound = true;
return false;
}
});
if (checkFound)
alert('checked Found');
else
alert('nothig checked');
而不是整个循环中的警报,为什么不使用标志并在找到某些东西时更新它。 根据标志,(在结束 - 循环后)只显示状态! 我希望以下修改将帮助您:
var found = false;
$('#dataTable').find('tr').each(function () {
var row = $(this);
if (row.find('input[type="checkbox"]').is(':checked') ) {
found=true;
//alert ("found");
// Do your job here
}
else{
//alert "NOthing found"
//found=false;
};
});
if (!found){
alert("Nothing Found");
}
else{
alert("Found");// Or you can omit the else part
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.