2015-01-13 4 views
-1

Я работаю над веб-сайтом JQuery Mobile с проверкой JQuery для проверки полей формы. JQuery Validation отправляет ajax-вызов серверу для проверки ввода пользователя с помощью «удаленного».Проверка JQuery - письмо с подтверждением письма

Существует странное явление, которое при первом проверке поля, вызов ajax не запускается до тех пор, пока не будет напечатано все слово. Ну, это то, чего я хочу. Однако, когда он получает подтверждение в первый раз, а затем, когда он получает последующие фокусы после этого, вызов ajax запускается каждый раз, когда набирается буква.

Есть идеи? Это ошибка?

Мой код выглядит следующим образом:

$("#form1").validate({ 

      // Specify the validation rules 
      rules: { 
       "txt-username": { 
        required: true, 
        remote: { 
         url: "ManageAccessServlet?action=checkUsernameExist", 
         type: "get" 
        } 
       }, 
       "txt-firstname": "required", 
       "txt-lastname": "required", 
       "txt-email": { 
        required: true, 
        email: true 
       }, 
       "txt-password": { 
        required: true, 
        minlength: 6 
       } 
      }, 

      // Specify the validation error messages 
      messages: { 
       "txt-username": "Username cannot be empty or it has been occupied in the system", 
       "txt-firstname": "Please enter your first name", 
       "txt-lastname": "Please enter your last name", 
       "txt-password": { 
        required: "Please provide a password", 
        minlength: "Your password must be at least 6 characters long" 
       }, 
       "txt-email": "Please enter a valid email address" 
      }, 

      submitHandler: function(form) { 
       form.submit(); 
      } 
     }); 

HTML, как показано ниже:

<form action="SignupServlet" method="POST" id="form1"> 
      <div data-role="collapsible" id="collapPersonalDetails" data-collapsed="false"> 
       <h1>Personal Information</h1> 
       <div class="ui-field-contain"> 
        <label for="txt-username">Username</label> 
        <input type="text" name="txt-username" id="txt-username" value=""> 
       </div> 
       <div class="ui-field-contain"> 
        <label for="txt-password">Password</label> 
        <input type="password" name="txt-password" id="txt-password" value=""> 
       </div> 

... ...

+0

Что вы используете для запуска запроса Ajax? Это на клавиатуре/keydown/отправке формы/кнопки? –

+0

Если это была ошибка, то Stack Overflow не является местом для сообщения об этом. В противном случае нам нужно увидеть минимальный пример кода, который воспроизводит проблему. – Sparky

+0

Где находится соответствующий HTML? – Sparky

ответ

0

«Любая идея об этом ли это ошибка?»

Нет, это не ошибка. Так плагин предназначен для работы. Это называется «ленивой» проверкой.

У вас не будет (required) валидации на фокусе или на клавиатуре до после кнопка отправки формы нажата в первый раз. Однако другие правила валидации будут инициированы при последующих попытках ввода данных после первого события «фокус».

Противоположность «ленивой» проверки называется «нетерпеливой».


EDIT:

Хотя совершенно неясно, в ОП, он просто хотел, чтобы отключить опцию onkeyup проверки, о чем свидетельствует его собственный ответ.

+0

Это произошло, даже если я нажал кнопку «Отправить». – alextc

0

Проблема решена. Мне пришлось добавить дополнительный параметр «onkeyup: false» в качестве опции для функции «validate». Это предотвращает запуск ajax-запроса проверки при каждом нажатии клавиши. Проверка выполняется только при вводе всего слова, и поле ввода теряет фокус.

+0

Проблема решена?Вы никогда не спрашивали о решении чего-либо или о том, как отключить проверку 'onkeyup'. Вы спросили, есть ли у вас ошибка. – Sparky

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