在Codeigniter中,我想验证单选按钮,但我不想在用户加载页面时选择一个(我的意思是没有“选中”属性)。
这是我到目前为止所做的......
我的观点文件:
<?=validation_errors()?>
<form action="step1" method="post">
<input name="food" type="radio" value="1" <?=set_radio('food', '1')?> />
<input name="food" type="radio" value="2" <?=set_radio('food', '2')?> />
<input name="food" type="radio" value="3" <?=set_radio('food', '3')?> />
</form>
我的控制器文件:
$this->form_validation->set_rules('food', 'food', 'required');
if ($this->form_validation->run() == TRUE) redirect('step2');
只有在我添加<input type="text">
之类的字段时才会显示错误消息。但我希望只有3个单选按钮,如果没有选择则会出现错误信息。
你知道怎么做吗?
答案 0 :(得分:3)
“ 必需 验证规则在表单仅包含单选按钮时不会返回错误消息”,因为CodeIgniter 2错误。详情请见https://github.com/EllisLab/CodeIgniter/issues/138。
我只是通过添加隐藏字段来修复它,例如<input type="hidden" value="true" name="fix_radio_required">
答案 1 :(得分:1)
您是否尝试过检查ON状态?
if($this->input->post('food') === 'on')
答案 2 :(得分:1)
这种方法对我们很有用。
<?php
$member_type = 1;
if(isset($_POST['member_type'])){
$member_type = $_POST['member_type'];
}
echo form_radio("member_type", 1, $member_type == 1 ? TRUE : FALSE,' id="member_type" class="form-control"');
echo form_radio("member_type", 2, $member_type == 2 ? TRUE : FALSE,' id="member_type" class="form-control"');
?>
为了扩展Andriy写的内容,我们将获取提交的单选按钮的值,然后执行TRUE或FALSE设置选中的值。
答案 3 :(得分:0)
使用Form Validation库,您可以通过以下方式实现:
<强>控制器强>
$this->form_validation->set_error_delimiters('', '<br>');
$this->form_validation->set_rules('type', '<b>Type</b>', 'trim|required|maxlength[1]|xss_clean');
查看强>
<label for="type_1">Is this type one, two or three? <b style="color: red">*</b></label></td>
<input type="radio" name="type" id="type_1"<?php echo set_radio('type', '1'); ?> value="1"><label for="type_1">One</label>
<input type="radio" name="type" id="type_2"<?php echo set_radio('type', '2'); ?> value="2"><label for="type_2">Two</label>
<input type="radio" name="type" id="type_3"<?php echo set_radio('type', '3'); ?> value="3"><label for="type_3">Three</label>
<span style="color: red; font-weight: bold"><?php echo form_error('type'); ?><?php echo isset($errors['type']) ? $errors['type'] : '' ?></span>
答案 4 :(得分:0)
控制器:
$this->load->library('form_validation');
$this->form_validation->set_rules('food', 'Radio button', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->form_validation->set_message('required', 'Error message');
}
在此设置单选按钮的规则:
$this->form_validation->set_rules('food', 'Radio button', 'required');
'food'表示单选按钮的名称。
'单选按钮' - 此字段的“人”名称
'required' - 此表单字段的验证规则
使用$ this-&gt; form_validation-&gt; run()运行表单验证库arnd检查表单是否通过(TRUE / FALSE)。
查看:
<?=validation_errors()?>
<form method="post">
<input type="radio" name="food" value="1">
<input type="radio" name="food" value="2">
<input type="radio" name="food" value="3">
<input type="submit" name="submit" value="submit">
</form>
这是带有3个单选按钮的表单,其名称为'radio',与控制器中使用的相同。
答案 5 :(得分:0)
查看文件
<?php echo form_error('gender')?>
<form name="frm" method="post">
<input type="radio" value="m" name="gender" /> Male <br />
<input type="radio" value="f" name="gender" /> Female <br />
<input type="radio" value="o" name="gender" /> Other
<input type="submit" value="submit" name="btn" />
</form>
<强>控制器强>
public function index()
{
$this->form_validation->set_rules('field' => 'gender', 'label' => 'Gender', 'rules' => 'required');
if($this->form_validation->run()==TRUE)
{
echo "hello wordl"; exit;
}
//Your view loading script..
}