【问题标题】:setting form validation rules for form_radio()为 form_radio() 设置表单验证规则
【发布时间】:2011-04-06 07:51:05
【问题描述】:

您好,我想在 codeigniter 中将 form_radio() 设置为必填字段,有什么想法可以做到这一点吗?

这是我的表格:

           echo form_radio('radio','earing',FALSE)."earings";
           echo form_radio('radio','bag',FALSE)."bag";
           echo form_radio('radio','bracelet',FALSE)."bracelet";
           echo form_close();

当然每次只需要提交一份……

提前致谢!

【问题讨论】:

    标签: php codeigniter validation radio


    【解决方案1】:

    您需要为表单的提交事件添加验证。 见下面的例子:

    <form action="page.php" method="post" onsubmit="return isValid(this);">
        <fieldset>
            <legend>Radio Buttons</legend>
    
            <input type="radio" value="1" name="myRadio" />Selection 1<br />
            <input type="radio" value="2" name="myRadio" />Selection 2<br />
            <input type="radio" value="3" name="myRadio" />Selection 3<br />
        </fieldset>
    
        <input type="submit" name="submitit" value="Submit" />
        <input type="reset" name="reset" value="Clear" />
    </form>
    
    <script type="text/javascript">
    
        function isValid(frm) {
            //  Initialize return value
            var isChecked = false;
    
            //  Check if radio was selected
            for (var i=frm.myRadio.length-1; i > -1; i--) {
                if (frm.myRadio[i].checked) {
                    isChecked = true;
                    break;
                }
            }
    
            if (isChecked == false) {
                alert("You must select a radio button");
                //  Data is invlaid,
                return false;
            }
    
            //  Everything is ok, continue with form submit
            return true;
        }
    </script>
    

    【讨论】:

    • 使用 javascript?谢谢!我会检查一下...虽然我真的希望有人可以帮助我在 codeigniter 上解决它,因为我似乎卡住了!这里是规则:codeigniter.com/user_guide/libraries/…
    【解决方案2】:

    避免需要验证单选按钮的一种方法是默认选中一个。这样一来,您甚至不必担心用户没有选择单选按钮,因为一旦选中一个单选按钮,就会始终选中一个。

    这并没有回答有关如何在 CodeIgnitor 中验证表单的具体问题(遗憾的是我不知道答案),但它可能对您实现总体目标很有用。

    【讨论】:

      【解决方案3】:

      如果你想使用验证,你的代码需要提交给控制器。

      class Form extends Controller {
      
          function index()
          {
              $this->load->helper(array('form', 'url'));
              $this->load->library('form_validation');
      
              $this->form_validation->set_rules('radio', 'Product', 'required');
      
              if ($this->form_validation->run() == FALSE)
              {
                  $this->load->view('myform');
              }
              else
              {
                  $this->load->view('formsuccess');
              }
          }
      }
      

      您真的不需要对 RADIO 进行验证。当你生成单选按钮时,选择一个,它总是有价值的。

      试试这样,应该会更好。如果未设置 radios 的值,它将生成默认选中第一个的单选框:

      echo form_radio('radio','earing', set_radio('radio', 'earing', TRUE))."earings";
      echo form_radio('radio','bag', set_radio('radio', 'bag'))."bag";
      echo form_radio('radio','bracelet', set_radio('radio', 'bracelet'))."bracelet";
      echo form_close();
      

      【讨论】:

        【解决方案4】:

        到目前为止,我解决它的方式(我觉得还可以)......是通过我的控制器中的一个简单的 if 语句来解决的:

         if($this->input->post('upload') && $this->input->post('radio')){
                     $this->Gallery_model->do_upload();
                  }
        

        但我想知道是否有更合适的方法使用表单验证类,所以我不会将此标记为答案...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多