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

2 回答 2

1

试一试:

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

   alert("No entry was selected!"); }
return true; });
于 2013-05-30T18:15:02.870 回答
0

您正在使用return true进入each循环。在每个循环中使用 return 只是意味着循环是继续(on true)还是停止(on false)。

也就是说,您的脚本将始终滚动悬停 a 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()阻止提交的形式。

于 2013-05-30T18:21:52.313 回答