2013-05-30 158 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()將阻止提交的形式。

相關問題