2013-08-22 150 views
-1

我有一個表單驗證腳本,用於驗證是否至少選中了1個複選框。Javascript檢查是否設置了陣列

<form name="samples" onsubmit="return validateForm();" action="process.php" method="post"> 
    <input type="checkbox" name="products[]" value="product-a"> 
    <input type="checkbox" name="products[]" value="product-b"> 
    <input type="checkbox" name="products[]" value="product-c"> 
</form> 

<script> 
function validateForm() { 
    var counter = document.forms["samples"]["products"].value; 
    if (x == null || x == "") { 
     alert("Please select at least one product"); 
     return false; 
    } 
} 
</script> 

上面的代碼似乎不起作用。

我在做什麼錯?

+5

酷的故事兄弟。 – Neal

+1

你的問題是什麼? – NPE

+0

jQuery不允許? – DevlshOne

回答

0
<script type = "text/javascript"> 
function validateForm() { 
var flag = false; 
var products = document.samples["products[]"]; 
for (var i = 0; i<products.length; i++) { 
    if(products[i].checked){ 
     flag = true; 
    } 
} 
if (flag != true) { 
    alert("Please select at least one product"); 
    return false; 
} 
return true; 
} 
</script> 
+0

這是假設只有3個產品....並且您正在重新選擇循環的每次迭代中的表單元素...這是不好的... – Neal

+0

根據您的修改建議尼爾。 –

1

你有名字products沒有輸入元素,你有名字products[]

arrayOfProductInputs = document.forms["samples"]["products[]"]; 
// ^^^ loop through those 

元素總數:

function validateCheckboxes() { 
    var arrayOfProductInputs = document.forms["samples"]["products[]"]; 
    var productsChecked = 0; 
    arrayOfProductInputs.forEach(function(itm){ 
     if(itm.checked) productsChecked++; 
    }); 

    if(productsChecked <= 0) { 
     alert("Please select at least one product"); 
     return false; 
    } 
    return true; 
} 
+0

Dangit。它看起來像應該工作,但它不工作......它只是在未檢查時發送表單。 –

+0

@BrianBarrus如果'arrayOfProductInputs'未定義,您可以嘗試添加一個檢查。 – Neal

+0

看起來像陣列產品[] –