当表单为空时,codeigniter表单不报告错误

时间:2015-01-28 03:05:32

标签: php forms codeigniter validation

这是我的控制器。所有字段都是必填字段,所有字段都是下拉列表。如果所有字段都为空(在任何下拉列表中未选择任何项目),则表单只会重新加载而不会出现错误。如果选择了任何一个或两个或三个,它会正确地报告未选择的那些是错误的,因为它们是空的。如果没有选择,它应该报告所有都是错误的,但它没有。

    $baserules = 'trim|required';
    $this->form_validation->set_rules('gender', 'Gender', $baserules . '|exact_length[1]');
    $this->form_validation->set_rules('category', 'Category', $baserules . '|max_length[32]');
    $this->form_validation->set_rules('state', 'State', $baserules . '|exact_length[2]');
    $this->form_validation->set_rules('city', 'City', $baserules . '|max_length[32]');

    if ($this->form_validation->run() === FALSE) {

        $this->load->view('templates/header', $data);
        $this->load->view('post/post', $data);
        $this->load->view('templates/footer');
    } else {
        redirect('search');
    }

我正在使用echo validation_errors();在视图中,它显示了同样的事情。表单为空时没有错误,但如果选择了四个中的一个,两个或三个,则更正错误。以下是观点:

<form action="http://example.com/index.php/post/post" method="post" accept-charset="utf-8" class="form-horizontal" id="postForm" name="postForm" role="form">
    <div class="form-group col-lg-12">
        <div class="centered">
            Please select each of the following and click continue.
        </div>

        <div class="column-quarter">
            <select style="width:100%;" id="gender" name="gender" >
                <option value="" selected disabled>select gender</option>
                <option value="f">Female</option>
                <option value="m">Male</option>
            </select>
        </div>

        <div class="column-quarter">
            <select style="width:100%;" id="category" name="category" >
                <option value="" selected disabled>select category</option>
                <option value="cat1">cat1</option>
                <option value="cat2">cat2</option>
            </select>
        </div>

        <div class="column-quarter">
            <select style="width:100%;" id="state" name="state" >
                <option value="" selected disabled>select state</option>
                <option value="tx">TX</option>
                <option value="tx">OH</option>
                <option value="tx">MI</option>
            </select>
        </div>

        <div id="citydiv" class="column-quarter">
            <select style="color: #999; width:100%;" id="city" name="city">
                <option value="" disabled>select city</option>
                <option value="city1">city1</option>
                <option value="city2">city2</option>
                <option value="city3">city3</option>
            </select>
        </div>
    </div>

    <div class="form-group col-lg-12 centered">
        <button type="submit" class="btn btn-success">Continue</button>&nbsp;&nbsp;
        <button type="reset" class="btn btn-success">Clear</button>
    </div>
</form>

1 个答案:

答案 0 :(得分:0)

disabled下拉列表中删除select属性。

例如,应该从

更改性别下拉列表

<option value="" selected disabled>select gender</option>

<option value="" selected>select gender</option>

通过将其默认为禁用,您在提交表单时不会提交。请参阅W3Schools上的提示部分。