2013-06-22 6 views
0

Я использую плагин проверки jquery на существующей форме, но он не стреляет в submit.плагин проверки подлинности jquery не срабатывает вообще

У меня нет ошибки javascript в браузере, но ничего не происходит, и форма отправляется, а это не должно.

Вот код:

<html> 
<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js></script> 
<script type="text/javascript"> 

$().ready(function() { 
    // validate the comment form when it is submitted 
    $("#registrationform").validate(); 

    // validate signup form on keyup and submit 
    $("#registrationform").validate({ 
     rules: { 
      fullname: { 
       required: true, 
       minlength: 2, 
       maxlength: 50 
      } 

     }, 
     messages: { 
      fullname: { 
       required: "Please enter a name", 
       minlength: "Your name must consist of at least 2 characters", 
       maxlength: "Your name must consist of not more than characters" 
      } 
     } 
    }); 
}); 
</script> 
</head> 

<body> 
<form id="registrationform" name="registrationform" method="post" action="pageaftervalidation.html"> 

<table> 
<tr> 
    <td>Name:</td> 
    <td><input id="fullname" name="fullname" type="text"></td> 
</tr> 
<tr> 
<td colspan="2"> 
    <input type="Submit" value="Submit"> 
</td> 
</tr> 
</table> 
</form> 
</body> 
</html> 

Почему не стреляя без проверки на представить?

Обнаружена проблема.

У меня не может быть двух функций проверки. Из демонстрации я попытался проверить форму как при представлении, так и в режиме keyup, но мне не нужно, так как проверка ключей делает оба.

Так установить выше я удалить строку

$("#registrationform").validate(); 
+0

Потому что вы сделали два вызова для проверки функции, выбрать один, например:. Coment эту строку // $ ("#") registrationform проверки(); – sinisake

+0

Пожалуйста, разместите решение ниже. – Sparky

ответ

1

Это не работает, потому что первый экземпляр .validate() имеет преимущество перед любой последующий момент. Поскольку в вашем первом экземпляре нет параметров, тогда плагин инициализируется без каких-либо правил или опций, а второй экземпляр полностью игнорируется.

$("#registrationform").validate(); // <-- delete this line. 

$("#registrationform").validate({ 
    // your rules & options 
}); 

Кроме того, as per jQuery documentation, это не рекомендуется ...

$().ready(function() { 

Изменить его к чему-то более стандартным ...

$(document).ready(function() { 

И еще эффективный код, вы можете использовать the rangelength method вместо minlength и maxlength.

minlength: 2, 
maxlength: 50 

может быть более просто, как написано ...

rangelength: [2,50]