循环遍历html表并检查是否选中了复选框

时间:2015-11-14 14:38:18

标签: javascript jquery html checkbox

我在这里尝试做的是验证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"
    };
});

4 个答案:

答案 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
}