2013-08-05 3 views
0

jQuery Validate работает (срабатывает ошибка при необходимости, поле электронной почты пуста), но код в submitHandler не запускается (предупреждение не отображается). И поскольку submitHandler не работает, я не ожидаю, что форма будет размещаться в secure/process_login.php, так как form.submit(); после после неработающего предупреждения(), но он делает, если он проверяет.jQuery Подтвердить: submitHandler отправляет форму без удара form.submit

Форма Код:

<form action="secure/process_login.php" method="post" id="login_form" name="login_form"> 
    <fieldset> 
    <legend>Log In</legend> 
    <div class="form-group"> 
     <label for="inputEmail">Email address</label> 
     <input type="text" id="email" class="form-control" name="email"placeholder="Your Email Address" required> 
    </div> 
    <div class="form-group"> 
     <label for="inputPassword">Password</label> 
     <input type="password" class="form-control" name="password" id="password" placeholder="Your Password"> 
     <input type="hidden" name="p" id="p" value=""> 
    </div> 
    <button type="submit" class="btn btn-primary form-control">Log In</button> 
    </fieldset> 
</form> 

Сценарий:

<script> 
    $("#login_form").validate({ 
    submitHandler: { 
    function formhash(form, password) { 
     // Create a new element input, this will be out hashed password field. 
     var p = document.createElement("input"); 
     // Add the new element to our form. 
     form.appendChild(p); 
     p.name = "p"; 
     p.type = "hidden" 
     p.value = hex_sha512(password.value); 
     // Make sure the plaintext password doesn't get sent. 
     password.value = ""; 
     // Finally submit the form. 
     alert("Test"); 
     form.submit(); 
    } 
    } 
    }); 
</script> 

ответ

0

У вас есть синтаксическая ошибка в вашем JS. Вам не нужно обертывать функцию formhash в фигурных скобках. Попробуйте это:

$("#login_form").validate({ 
    submitHandler: function formhash(form, password) { 
     //submit code 
    } 
}); 
+0

Спасибо за ответ Phil. Я изменил его и снова попытался. Самое смешное в том, что теперь выглядят и проверены изменения проверки (обычный текст и красивый ящик). Но остальное остается неизменным, предупреждение не запускается, и форма отправляется в любом случае. –

+0

Я скопировал ваш точный код, применил мое исправление, и он прошел локально для меня. Без исправления я видел синтаксическую ошибку –

+0

Является ли ваш тег скрипта до или после формы HTML? Если это необходимо после того, как вам нужно будет обернуть его в $ (document) .ready (function() {}) –

0

Вы должны установить loginform в качестве атрибута идентификатор тега формы. Когда вы используете $('#loginform') в качестве вашего селектора.

+0

Изменение '<форма действия = "безопасный/process_login.php" метод = "пост" имя = "login_form">' в '<действие = метод формы "безопасный/process_login.php"=» post "id =" login_form "name =" login_form ">' приводит к такому же поведению. –

Смежные вопросы