codeigniter表单验证不起作用

时间:2014-08-18 06:32:10

标签: jquery ajax codeigniter

我已根据CI用户指南多次尝试过但如果有空文本字段,则该过程与填写的所有字段的工作方式相同。那么另一个问题是如何在各个输入字段附近回显验证错误

这是我的代码

查看

<div id="content">

    <h2>Bank account Details.</h2>
    <?php
          $this->load->helper('form');
          $attributes =  array('method'=>'post','name'=>'create_bank','id'=>'create_bank');
          echo form_open_multipart('',$attributes);?>

    <label>Account number : </label> <?php echo form_input('accountnumber');?><br/> <br/>
    <label>Bank : </label> <?php echo form_input('bank');?><br/><br/>
    <?php echo form_hidden('branch',$id);?><br/><br/>
    <input type="submit" name="submit" value="Save"/>
    <?php echo form_close(); ?>

 </div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">   </script>
    <script>   //no need to specify the language
       $(document).ready(function() {

       $('#create_bank').on("submit",function(e) {

            e.preventDefault();

            $.ajax({
                type: "POST",
                url: "<?php echo site_url('site/create_bank'); ?>",
                data: $(this).serialize(),
                success: function(data){
                    //var site_url = "<?php echo site_url('site/home'); ?>";
                    window.location.href = "<?php echo site_url('site/home'); ?>";
                }
           });            
        });
      });
    </script>

控制器

function create_bank(){

    $this->load->library('form_validation');
    $this->form_validation->set_rules('accountnumber', 'Account Number', 'required');
    $this->form_validation->set_rules('bank', 'Bank', 'required');

    if ($this->form_validation->run() == FALSE)
    {
        $this->home();
    }
    else
    {
        $this->load->model('bank_account_model');
        $this->bank_account_model->insert_bank();
    }


 }

1 个答案:

答案 0 :(得分:2)

为了查看错误消息,您的页面应该刷新,只有下面的代码才能看到完整的验证错误:

<?php echo validation_errors() ?>

您可以将此代码放在表单上方。在这里,您通过AJAX提交表单,在这种情况下,您需要收集某些变量中的所有错误,然后将其传递到视图页面并将所有错误显示为单个变量。检查以下代码

function create_bank(){
    $this->load->library('form_validation');
    $this->form_validation->set_rules('accountnumber', 'Account Number', 'required');
    $this->form_validation->set_rules('bank', 'Bank', 'required');

    if ($this->form_validation->run() == FALSE)
    {
        $data['validationErrors']=validation_errors(); //Errors collected
        $this->home($data); //Passed to home, you can define your function like public function home($msg=''){}
    }
    else
    {
        $this->load->model('bank_account_model');
        $this->bank_account_model->insert_bank();
    }
 }

在视图页面上,在表单上方添加以下代码行

<?php
if(isset($validationErrors)&&($validationErrors!=''))
{
   echo $validationErrors;  //This is a variable that has been passed to home(via create_bank).
}
?>

现在,如果您希望捕获单个错误,则下面的代码行会给出单独的错误消息:

<?php echo form_error('fieldName')?>

所以在单独的变量中捕获个别错误并显示在哪里。