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

そうは言っても、スクリプトは常にホバーをロールバックし、フォームの送信を妨げますreturn false

あなたにできること

ループを維持したい場合は、var に true か false かを保存してください。

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。true の場合.preventDefault()、フォームの送信を妨げます。

于 2013-05-30T18:21:52.313 に答える