2011-05-30 82 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