2014-10-13 1 views
0

Я пытаюсь интегрировать плагин JQuery Validate в мое приложение Rails:jQuery.validate вызывает только представить в моем Rails приложение

<script> 
$(function() { 
     $("#edit_researcher").validate({ 
     debug: false, 
     rules: { 
      "researcher[first_name]": {required: true}, 
      "researcher[email]": {required: true, email: true} 
     }, 
     messages: { 
      "researcher[first_name]": { required: "First name is required" }, 
      "researcher[email]": { 
      required: "Email is required", 
      email: "Your email address must be in the format of [email protected]" 
      } 
     } 
    }); 
</script> 

Это работает, но проблема в том, что метод .validate только срабатывает при нажатии кнопки отправки. Я хотел бы, чтобы он срабатывал в onfocus и onblur, так как я считаю, что это значение по умолчанию для jQuery.validate().

Кто-нибудь сталкивался с той же проблемой при реализации jQuery.validate() в приложении Rails?

Как я могу заставить его активировать проверку на onfocus и onblur?

+1

Там нет ничего, что вы показали нам в коде выше, что будет нарушать поведение по умолчанию плагин. Где ваша разметка HTML? – Sparky

ответ

1

Цитата OP:

»... проблема в том, что метод .validate включается только при нажатии кнопки передачи я хотел бы, чтобы он вызвал на onfocus и onblur как. Я считаю, что это значение по умолчанию для jQuery.validate(). "

Там нет таких событий в этом плагине как onfocus и onblur. Собственно, поведение по умолчанию: onfocusout и onkeyup. ОДНАКО, эти два поведения начинаются только с после начального нажатия кнопки отправки.

Ваш существующий код: http://jsfiddle.net/bu7ukmvy/

Это поведение по умолчанию называется «Ленивый Validation» в отличие от «нетерпеливого Validation», которая является то, что вы, кажется, с просьбой.

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

$("#edit_researcher").validate({ 
    // rules & options, 
    ...., 
    onfocusout: function (element) { 
     this.element(element); 
    }, 
    onkeyup: function (element, event) { 
     this.element(element); 
    } 
}); 

Работа DEMO: http://jsfiddle.net/bu7ukmvy/1/

+0

привет, Sparky, спасибо большое, я добавил ваш код, и он работает сейчас:) – Toontje

+0

@Toontje, пожалуйста. Вы хотели «нетерпеливую» проверку, где «ленивая» проверка является по умолчанию этим плагином. Смотрите мои правки. – Sparky

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