繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM