2013-05-30 105 views
0

尽管以下函数有一点小问题。但我找不到。每当任何一个复选框被选中或不被提交时,表单都没有提交!表单未提交复选框阵列

<input type="checkbox" name="chk_user[]" value="1" class="chk_delete" id="1" /> 
<input type="checkbox" name="chk_user[]" value="2" class="chk_delete" id="2" /> 
<input type="checkbox" name="chk_user[]" value="3" class="chk_delete" id="3" /> 
<input type="checkbox" name="chk_user[]" value="4" class="chk_delete" id="4" /> 
<script> 
    $("form").submit(function() { 
     $('.chk_delete').each(function(){ 
      if($(this).is(':checked')){    
       return true; 

      } 
     }); 
     alert("No entry was selected!"); 
     return false; 
    }); 
</script> 

任何人都可以找到问题吗?

以下是工作,但我不明白为什么。任何好的逻辑?

$("form").submit(function(e) { 
    if(!$('input[type=checkbox]:checked').length) { 
     e.preventDefault(); 
     alert("No entry was selected!"); } 
    return true; }); 
+1

为什么你没有的形式包裹在''

标签? – dKen

+1

请显示完整的HTML,以便我们看到表单的结构。 – thatidiotguy

+0

也脚本不在脚本标记...我认为我们错过了一些 – cfs

回答

2

给这个一抡:

$("form").submit(function(e) { 
    if(!$('input[type=checkbox]:checked').length) { 
    e.preventDefault(); 

    alert("No entry was selected!"); } 
return true; }); 
0

您正在使用return trueeach环。在每个循环中使用return只是意味着循环继续(在true上)或停止(在false上)。

那个绅士说,你的脚本会一直滚动盘旋return false,阻止表单提交。

你可以做什么

如果你想保持环路,保存,如果这是真的还是在VAR假的!

var isChecked = false; 
$('.chk_delete').each(function(){ 
    isChecked = $(this).is(':checked')  
    return !isChecked; 
}); 
return isChecked; 

OR

使用你的工作剧本,我看不出有什么地方错了

$("form").submit(function(e) { 
    if(!$('input[type=checkbox]:checked').length) { 
     e.preventDefault(); 
     alert("No entry was selected!"); 
    } 
    return true; 
}); 

$('input[type=checkbox]:checked')选择每个检查框。所以$('input[type=checkbox]:checked').length取长度。有!!=是一样的。

最后,!$('input[type=checkbox]:checked').length$('input[type=checkbox]:checked') != 0的shotcut。如果属实,那么.preventDefault()将阻止提交的形式。

相关问题