当表单为空时,代码点火器表单不会报告错误


codeigniter form does not report errors when form is empty

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

    $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>

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

例如,性别下拉列表应从

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

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

如果将它们默认为禁用,则在您提交表单时不会提交它们。请参阅W3Schools的提示部分。