jQuery复选框验证不起作用

时间:2014-12-03 11:25:22

标签: jquery

此脚本正在执行复选框,具体取决于从xml文件

收集的信息量
 function parseXml(xml) {  
  $(xml).find("sterowniki").each(function() { 
  var i = 1;
$(xml).find("items").each(function() { 
$( "#pierwszy" ).append(' <div class="row"><div class="checkbox"><label><li class="col-xs-10 col-sm-10 col-md-10 col-lg-10"><a href="produkt.html?id='+i+'">'+$(this).attr('name')+'</a></li><input class="col-xs-2 col-sm-2 col-md-2 col-lg-2" type="checkbox" name="porownaj"  value="stery"></label></div></div>');     
  i=i+1;
   });
});
}  
});

这是验证

<script type="text/javascript">
  var limit = 1;
$('input.checkbox').on('change', function(evt) {
if($(this).siblings(':checked').length >= limit) {
   this.checked = false;
}
});
</script>

但是,验证不起作用。我究竟做错了什么? 感谢

2 个答案:

答案 0 :(得分:0)

您正在使用class="checkbox"找到复选框,但实际上div包含复选框。

因此在checkbox内找到div来绑定更改事件。并且所有复选框都不是兄弟姐妹,因此您需要在div内找到它们然后进行计数。

见下面的代码 -

var limit = 1;
$('#pierwszy').on('change','div.checkbox input[type=checkbox]', function() {
   var count = $('div.checkbox input[type=checkbox]:checked').length;
  if(count > limit) {
   this.checked = false;
  }
});

答案 1 :(得分:0)

是的,因为你在动态生成的元素上绑定了更改事件,在页面加载脚本时加载了但是dom没有那个复选框,所以你必须将事件委托给{ {1}}或closest static parent本身:

document

或:

$('#pierwszy').on('change', 'input[type="checkbox"]', function(evt) {

注意: -

您附加了一些没有任何结束的元素。