Мои флажки выглядят так
<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 )
это когда они проверены