2012-04-05 176 views
2

我是PHP Codeigniter框架的新手。我正在设计一个我正在使用链接的页面。在点击链接时,它调用一个jquery函数,它通过jquery提交表单。我已经使用codeigniter表单验证方法进行服务器端验证,而且我已禁用客户端验证。PHP Codeigniter表单提交使用JQuery

问题是,在这个过程中,当通过jquery提交表单时,codeigniter表单验证方法不起作用。

但是,如果我使用提交按钮来提交表单,那么codeigniter表单验证方法完美地工作。

如果我需要通过jQuery提交表单并使用codeigniter表单验证方法,请告诉我该怎么做。

请找到下面的代码:

登录表单:

<?php echo validation_errors(); ?> 
<form name="login-form" id="login-form" method="post" action="<?php echo base_url();?>index.php/login/login_form" > 
    <H2>Login</H2> 
    <div id="login-box-name"> 
     Email: 
    </div> 
    <div id="login-box-field"> 
     <input name="user-name" id="user-name" class="form-login" title="Please Enter Correct User Name" value="" size="30" maxlength="2048" /> 
    </div> 
    <div id="login-box-name"> 
     Password: 
    </div> 
    <div id="login-box-field"> 
     <input name="password" id="password" type="password" class="form-login" title="Please Enter Correct Password" value="" size="30" maxlength="2048" /> 
    </div> 
    <br /> 
    <span class="login-box-options"> 
     <input type="checkbox" name="1" value="1" title="Want this computer to remember you!!"> Remember Me <a href="#" id="login-div-change">Forgot password?</a> 
    </span> 
    <br /> 
    <br /> 
    <a href="" id="login-submit"> 
     <img src="<?php echo base_url();?>assets/images/login-btn.png" width="110" height="40" style="margin-left:90px;" /> 
    </a> 
    <input type="submit" name="submit" id="submit" value="Submit" /> 
</form> 

jQuery函数提交关于点击 “链接” 的形式:

 

    $("#login-submit").click(function() 
    { 
    $('#login-form').submit(); 
    return false; 
    }); 

控制器功能:

 

    public function login_form() 
    { 

     $this->load->helper(array('form', 'url')); 
     $this->load->library('form_validation'); 
     $data['title'] = 'Log In'; 

     $data['errorMessage'] = ''; 
     $this->form_validation->set_rules('user-name', 'Email', 'required'); 
     $this->form_validation->set_rules('password', 'Password', 'required'); 

     if ($this->form_validation->run() == FALSE) 
     { 
     $this->load->view('templates/header', $data); 
     $this->load->view('login', $data); 
     $this->load->view('templates/footer'); 
     } 

     else 
     { 
     $this->load->view('templates/header', $data); 
     $this->load->view('templates/menu'); 
     $this->load->view('index', $data); 
     $this->load->view('templates/footer'); 
     } 

    } 

这里,如果我点击表单的“提交”按钮,那么codeigniter验证适用于用户名和密码字段。但是,如果我点击id =“login-submit”的链接,它会调用jquery函数并提交表单。但此次codeigniter验证不适用于用户名和密码字段。

我需要通过链接提交表单并且codeigniter验证函数应该为此工作。

在此先感谢.....

+1

一些代码,可以帮助你...你确定你是调用同一个功能控制器的jQuery和默认的提交操作? – snaderss 2012-04-05 14:18:59

+1

DUDE!我完全喜欢jquery和CI,整天使用它,让我告诉你一些事情会很有帮助!看看[这个jQuery插件](http://jquery.malsup.com/form/)它会让你的生活变得更容易100X,并且当你需要从php那边看到一些不需要的东西时,记得使用'print_r'相当加起来 – SpYk3HH 2012-04-05 14:20:37

+1

我可以给你的另一个技巧[书签此页](http:// codeigniter。com/user_guide /)并经常使用它,使用它的一个好方法是单击左上角的“目录”选项卡,当它打开时,使用(在Chrome中是我使用的)ctrl + f来调出“找到”然后只需输入你要找的内容,并快速找到链接 – SpYk3HH 2012-04-05 14:23:03

回答

2

使用.preventDefault(),而不是仅仅返回的锚单击事件错误的。

这发生在我之前,在我看来,在点击事件中使用.submit()在某处存在冲突,并返回false以停止锚点的默认行为。

+0

谢谢rgin ...我现在才发现它... – Gourav 2012-04-06 07:18:15

+0

它工作正常吗?后续问题 - 无论如何,当你已经有提交按钮时,你为什么使用链接提交表单? '.submit()'有一个回调函数,你知道,它可能更适合你的需求。 – rgin 2012-04-06 07:21:57

+0

我使用的链接只有一个统一的设计到网站,因为我正在使用按钮的图像,我认为这只能通过使用链接。是的,我现在得到它(回调函数)....它肯定会帮助我..再次感谢rgin – Gourav 2012-04-06 07:27:24

2

上面的代码工作正常。其实我在我的代码中犯了一个愚蠢的错误。 我用jQuery的以下代码,它现在正在工作。

 

    $("#login-submit").click(function(e) { 
     e.preventDefault(); 
     $('#login-form').submit(); 
    }); 

感谢

+0

你能帮我解决这个问题吗?我的解决方案有问题,My $(“#form”)。submit()不起作用。 – 2017-03-21 07:23:14