2014-02-20 110 views
0

我有多個複選框,並且它必須被檢查。 我寫下了代碼,但它不起作用。多個複選框驗證在javascript

這是代碼 HTML樣本::

<form name="pembres" id="pembres" method="POST" onSubmit="return validateform()" style="margin:0;"> 
    <input type="checkbox" name="lanjut[]" value="setuju2" /> 
    <input type="checkbox" name="lanjut[]" value="setuju3" /> 
    <input type="checkbox" name="lanjut[]" value="setuju4" /> 
    <input type="checkbox" name="lanjut[]" value="setuju5" /> 
    <input type="submit" value="Next Step" name="next" /> 
    </form> 

1日在腳本頭標記

<script type="text/javascript"> 
     function validateform(){ 
      var success = false; 
       for (i = 0; i < document.pembres.elements['lanjut[]'].length; i++){ 
        if (document.pembres.elements['lanjut[]'][i].checked){ 
         success = true; 
        } 
       } 
      return success; 
     } 
    </script> 

第二腳本前/身體

<script type="text/javascript"> 
var form = document.getElementById('pembres'); 
form.onsubmit = validateForm; 

function validateForm() { 
    var isValid = false, 
     form = this, 
     els = form.elements['lanjut[]']; 
     i; 
    for (i = 0; i < els.length; i += 1) { 
     if (els[i].checked) { 
      isValid = true; 
     } 
    } 
    return isValid; 
} 
</script> 
+0

你的代碼是說如果一個被選中,而不是全部。 – epascarello

+0

你能幫我把這一切都檢查嗎? – user3330800

+0

做相反的邏輯... – epascarello

回答

0

要設置isValid爲真如果任何複選框被選中,你應該做的是返回false,如果有任何c heckbox沒有被選中。

function validateForm() { 
    var form = this, 
    els = form.elements['lanjut[]'], i; 
    for (i = 0; i < els.length; i += 1) { 
     if (!els[i].checked) { 
      return false; 
     } 
    } 
    return true; 
} 
+0

可能應該在「form =」前面加上「var」來防止把這些變量放在全局範圍內。 –