我在这里尝试做的是验证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"
};
});
答案 0 :(得分:8)
无需循环任何事情。只需使用您的选择器在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
}
答案 1 :(得分:2)
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
}
答案 2 :(得分:2)
尝试与您的代码相同。
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');
答案 3 :(得分:2)
为了不在整个循环中发出警报,为什么不使用标志并在找到某些内容时更新它。根据标志,(在结束 - 循环后)只显示状态! 我希望以下修改将对您有所帮助:
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
}