表单未提交复选框数组

时间:2013-05-30 18:03:43

标签: php jquery codeigniter

虽然以下功能有点问题。但我找不到。每次选中是否选中复选框但未提交表格!!

<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; });

2 个答案:

答案 0 :(得分:2)

给它一个旋转:

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

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

答案 1 :(得分:0)

您正在return true循环使用each。在每个循环中使用return只表示循环是继续(在true上)还是在它停止(在false上)。

该beign说,你的脚本将总是滚动return false,阻止表单提交。

你能做什么

如果你想保持循环,在var!

中保存它是真还是假
var isChecked = false;
$('.chk_delete').each(function(){
    isChecked = $(this).is(':checked')    
    return !isChecked;
});
return isChecked;

使用你的工作脚本,我看不出它有什么问题

$("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的截图。如果是,则.preventDefault()会阻止提交的形式。