2012-04-05 3 views
2

Я новичок в PHP Codeigniter framework. Я разрабатываю страницу, в которой я использую ссылку. При нажатии на ссылку он вызывает функцию jquery, которая отправляет форму через jquery. Я использовал методы проверки формы кодаignign для проверки на стороне сервера и для того, чтобы я отключил проверку на стороне клиента.PHP Codeigniter form submit with 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'); 
     } 

    } 

Здесь, если я нажму кнопку «Отправить форму формы», то проверка правильности кода работает для полей имени пользователя и пароля. Но если я нажму ссылку с id = "login-submit", тогда она вызывает функцию jquery и форму отправляется. Но на этот раз проверка правильности кода не работает для полей имени пользователя и пароля.

Мне нужно отправить форму по ссылке, и функция проверки правильности кода должна работать для этого.

Заранее спасибо .....

+1

некоторый код может помочь ... Вы уверены, что вы вызываете ту же функцию в контроллере для JQuery и по умолчанию представить действия? – snaderss

+1

DUDE! Я полностью люблю jquery и CI, использую его весь день, и позвольте мне рассказать вам кое-что, что поможет БОЛЬШО! Проверьте [этот плагин jQuery] (http://jquery.malsup.com/form/), это облегчит вам жизнь 100X, также не забудьте использовать 'print_r', когда вам нужно что-то увидеть с php-стороны, довольно сложение – SpYk3HH

+1

Еще один совет, который я могу вам дать [закладки этой страницы] (http: // codeigniter.com/user_guide /) и использовать его часто, отличный способ использовать его - щелкнуть вкладку «Оглавление» в верхнем левом углу, когда она открывается, использовать (в хром - это то, что я использую) ctrl + f, чтобы вызвать «найти», то просто введите то, что вы ищете, и найдите ссылку быстро и просто – SpYk3HH

ответ

2

Использование .preventDefault() вместо того, чтобы просто возвращение ложным на событие анкер щелчка.

Это случилось со мной раньше, и мне кажется, что есть конфликт где-то, используя .submit() внутри события click и возвращающего false, чтобы остановить поведение якоря по умолчанию.

+0

Спасибо rgin ... Я только что нашел его сейчас ... – Gourav

+0

Это работало? Последующий вопрос. Почему вы используете ссылку для отправки формы, когда у вас уже есть кнопка отправки? '.submit()' имеет функцию обратного вызова, вы знаете, и она может лучше соответствовать вашим потребностям. – rgin

+0

Я использую ссылку только для того, чтобы иметь единый дизайн для сайта, поскольку я использую изображение для кнопки, и я думаю, что это возможно только с помощью ссылки. Да, я получил его сейчас (функция обратного вызова) .... Это определенно поможет мне. Спасибо Спасибо rgin – Gourav

2

Приведенный выше код работает нормально. На самом деле я сделал глупую ошибку в своем коде. Я использовал следующий код для jQuery и теперь работает.

 

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

Благодаря

+0

Не могли бы вы помочь мне в этой проблеме снова ?? У меня проблема с решением, My $ ("# form"). Submit() не работает. –