2012-01-10 98 views
0

在Codeigniter中,我想验证单选按钮,但我不想在用户加载页面时选择一个(我的意思是没有“选中”属性)。在Codeigniter中,如何验证单选按钮(没有“checked”)?

这是我迄今所做的......

我的视图文件:

<?=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

如果您向我们展示了您已经尝试过的内容,将会有所帮助。无论如何,使用此链接作为指导:http://codeigniter.com/user_guide/libraries/form_validation.html – stefandoorn 2012-01-10 09:41:42

+0

这里是答案 - http://stackoverflow.com/questions/2034185/repopulate-radio-buttons-on-失败验证 – Timur 2012-01-10 09:56:11

+0

@stefandoorn已添加代码。谢谢,但我已经使用指南的这个页面:) – Dacobah 2012-01-10 10:10:05

回答

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> &nbsp; 
<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> 
+0

我试过了,但它不起作用... – Dacobah 2012-01-10 10:06:58

0

使用Form Validation

控制器:

$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'); 

'食品' 是指你的单选按钮的名称。

'单选按钮' - “人” 的名字该字段

'需要' - 验证规则此表单字段

随着$这个 - > form_validation-> run()的运行表单验证库检查你的表单是否通过(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个单选按钮。

+0

你是什么意思type =“food”?除了这个问题之外,你可以观察到其余的代码与我的非常相似。它对我没有太大的帮助...:/ – Dacobah 2012-01-10 10:23:05

+0

ooops ..我的不好。类型是“收音机”名称=“食品”:)对不起 – TNT 2012-01-10 10:30:21

+0

好吧,起初我误解了你的问题。也许现在它是你需要的? – TNT 2012-01-10 10:36:44

1

您是否尝试检查ON状态?

if($this->input->post('food') === 'on') 
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.. 
} 
3

需要验证规则不返回ERR或者当表单只包含单选按钮时出现消息“,因为CodeIgniter 2的bug。在这里看到细节 - https://github.com/EllisLab/CodeIgniter/issues/138

我只是通过添加隐藏字段来修复它。 <input type="hidden" value="true" name="fix_radio_required">

+0

谢谢 - 这有帮助! – foxybagga 2014-07-29 08:32:12

+0

现在是否已修复此问题,还是需要添加隐藏字段? – Kat 2014-08-22 10:09:28

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"'); 
?> 

要展开什么舍甫琴科写我们将提交的单选按钮的值,然后做一个TRUE或FALSE设置检查值。