Codeigniter set_checkbox()保持检查状态

时间:2013-05-08 09:29:44

标签: php codeigniter checkbox

我的观点中有这个代码:

<input type="checkbox" name="test[]" value="1" <?php echo set_checkbox("test[]", "1") ?> >test1 

<input type="checkbox" name="test[]" value="2" <?php echo set_checkbox("test[]", "2") ?> >test2

这些复选框不是必需的,但表单上的其他一些字段是。我希望在发布表单时保留这些复选框的状态。复选框中的值如果被选中则在POST中,但是在帖子之后再次加载表单时(如果在帖子之前检查了一些表单,我希望在帖子之后检查它),则不保留选中状态。我也试过set_checkbox(“test”,“1”),但它没有用。其他文本字段的值使用set_value()函数保存,并且工作正常。

6 个答案:

答案 0 :(得分:2)

我意识到set_checkbox需要3个参数:

 set_checkbox(string $checkboxname, string $value, boolean $isChecked);

例如:

 echo form_checkbox('mycbx[]',
                    $item['id'],
                    set_checkbox('mycbx[]', $item['id'], false)
      );

或者这样:

$checkbox = array(
    'name'        => 'mycbx[]',
    'value'       => $item['id'],
    'checked'     => set_checkbox('mycbx[]', $item['id'], false)
);
echo form_checkbox($checkbox);

答案 1 :(得分:2)

在您的视图中添加如下所示的行:

<input type="checkbox" name="mycheck[]" value="1" <?php echo set_checkbox('mycheck[]', '1', true); ?> />

上面的代码假设您希望默认选中该框,如果没有,则只需将第3个参数更改为false。

然后在你的验证中添加一条没有规则的行(所以codeigniter知道它必须对它做一些事情)。这是一个例子:

$this->load->library('form_validation');      
$this->form_validation->set_rules('mycheck[]', 'My message that no one will ever see.', '');

最后,请确保不要通过输入状态将输入项显式设置为已选中。这将覆盖codeigniter参数。换句话说,请勿执行此操作<input checked />

就是这样。应该像魅力一样工作。

答案 2 :(得分:1)

从set_checkbox方法调用中删除[]。

如需更明智的答案,请参阅Repopulating checkboxes in Codeigniter after Unsuccessful Form Validation

答案 3 :(得分:1)

set_checkbox(&#39; mycheckbox&#39;,&#39; value&#39;,TRUE)

答案 4 :(得分:0)

当您使用&#34;测试[]&#34;等数组时在表单中,您不需要在set_checkbox来电中加入方括号([])。

set_checkbox应该总是这样:

set_checkbox('test', 'value');

其中&#39;价值&#39;是表单复选框的第二个参数。

答案 5 :(得分:0)

试试这个人,对我有用:)
只需将“值”放入 []

<input type="checkbox" name="test[1]" value="1" <?php echo set_checkbox("test[1]", "1") ?> >test1 

<input type="checkbox" name="test[2]" value="2" <?php echo set_checkbox("test[2]", "2") ?> >test2
相关问题