2011-05-30 79 views
0

我的複選框看起來像這樣笨複選框陣列

<div> 
    <input type="checkbox" name="fruits[]" value="apple" <?php echo set_checkbox('fruits[]', 'apple'); ?> /> 
    <input type="checkbox" name="fruits[]" value="banana" <?php echo set_checkbox('fruits[]', 'banana'); ?> /> 
    <input type="checkbox" name="fruits[]" value="peach" <?php echo set_checkbox('fruits[]', 'peach'); ?> /> 
</div> 

我使用數組中的名字,這樣我可以填充文本字段(通過jQuery)與我選擇複選框的值。我正在使用在stackoverflow上找到的腳本。

function calculate() { 

     var fruit = $.map($('input:checkbox:checked'), function(e, i) { 
      return e.value; 
     }); 

     $('#fruits').val(fruit.join(',')); //adds values separated by comma to #fruits input 
    } 

    calculate(); 

    $('div').delegate('input:checkbox', 'click', calculate); 

到目前爲止,它的工作原理,但我無法設置驗證規則的複選框,因爲它們都具有相同的名稱。我試過..

$this->form_validation->set_rules('fruits[]', 'Apple', 'required|xss_clean'); 
$this->form_validation->set_rules('fruits[]', 'Banana', 'required|xss_clean'); 
$this->form_validation->set_rules('fruits[]', 'Peach', 'required|xss_clean'); 

和使用echo form_error('fruits[]');顯示驗證錯誤,但沒有任何反應。最終,我想在提交狀態下顯示一個複選框,如果在我的表單中的另一個字段發生錯誤。相反,所有的複選框取消選中。我不知道如何解決這個問題。

POST

Array ([FRUITS] => Array ([0] => apple [1] => banana [2] => peach) 

這是當他們檢查

+0

可以給我您的文章?在表單驗證之前放置print_r($ _ POST);死(); – 2011-05-30 17:56:19

+0

是的,已更新我的問題 – CyberJunkie 2011-05-30 18:02:26

回答

2

嘗試不使用方括號[],所以只是 '果實'。

[]只是對瀏覽器說「將這些值作爲數組發佈,而不是單個值,因爲它們是一個組」,但在PHP中,您只需將其作爲任何其他值即可。 $ _ POST [「果實」。

希望幫助,

一切順利, NWN

+0

要澄清,請保留HTML中的括號,但將它們放在: $ this-> form_validation-> set_rules('fruits','Apple','required | xss_clean'); – NwN 2011-05-30 18:34:49

+0

謝謝!但沒有括號它不起作用。我最終添加了一個循環。 – CyberJunkie 2011-05-30 18:39:18

+0

實際上,jquery似乎只要有一個複選框就可以使用任何名稱。也許你是對的 – CyberJunkie 2011-05-30 18:44:46