2010-10-18 48 views
1

我有一個複選框列表,我想確保用戶在提交表單前至少檢查一個複選框。我怎樣才能做到這一點?複選框驗證器

有3個類別,然後每個類別10個項目與複選框。

我想在javascript中這樣做,其中我將有一個隱藏變量,然後當用戶檢查任何複選框時,隱藏變量將有1作爲它的值,然後如果用戶將取消選中該框,隱藏變量將具有0作爲其值。

回答

4

你是如何標記它們的?

我希望像這樣...

<input type="checkbox" name="something[]" value="55" /> 
PHP

則...

if (! isset($_POST['something']) OR empty($_POST['something'])) { 
    echo 'Select a checkbox, please!'; 
} 

您還可以檢查與的JavaScript ...

var inputs = document.getElementById('my-form').getElementsByTagName('input'); 
var checked = 0; 
for (var i = 0, length = inputs.length; i < length; i++) { 
    if (inputs[i].getAttribute('type') !== 'checkbox') { 
     continue; 
    } 

    if (inputs[i].checked) { 
     checked++; 
    } 
} 

if (checked === 0) { 
    alert('Select a checkbox, please!'); 
} 

See it working on JSbin

+0

我該如何在javascript中做到這一點? – anonymous2 2010-10-18 01:49:49

+1

@ anonymous2查看我的編輯:) – alex 2010-10-18 01:57:38

+0

+1這就是答案。但是,只是好奇,爲什麼混合了客戶端和服務器端技術?我做一切服務器端,因爲,用戶可以關閉JS,你必須處理(如何?)。而且,根據我的經驗,不可避免地會有人編輯頁面源代碼,稍微改變JS,「只是爲了看看會發生什麼」。無論哪種情況,您都需要長時間的維護,所以我建議僅使用服務器端(ymmv) – Mawg 2010-10-18 02:03:02