Плагин проверки jQuery - фокусирует событие, несовместимое с событиями клавиши / мыши - PullRequest
2 голосов
/ 21 февраля 2012

Я использую плагин проверки запросов (http://docs.jquery.com/Plugins/Validation), и моя цель - показать сообщения об ошибках перед отправкой формы. Для этого я использую метод .valid ().

IЯ не хочу показывать эти сообщения до тех пор, пока не возникнет ошибка, поэтому сначала я их скрываю. Когда поле фокусируется в первый раз, я не хочу показывать сообщение об ошибке. Это прекрасно работает, когда фокусировка вводится с помощьюмыши, однако, когда вы используете клавишу табуляции для фокусировки поля, сообщение об ошибке все равно отображается.

Я создал скрипку, чтобы продемонстрировать проблему фокуса: http://jsfiddle.net/tucsonlabs/WQnHN/4/

Ответы [ 3 ]

2 голосов
/ 21 февраля 2012

Это должно работать: http://jsfiddle.net/yQRvZ/

var code;
$('input').keyup(function(e) {
    code = (e.keyCode ? e.keyCode : e.which);
    if(code == 9) {
        return false;
    }
});

Каждый раз, когда вы отпускаете ключ (это .keyup()), и поле input фокусируется, этот код jQuery проверяет код ключа выпущенного ключа. Для Tab код ключа 9, поэтому каждый раз, когда вы отпускаете Tab, return false; предотвращает событие по умолчанию и предотвращает всплывающее событие.

1 голос
/ 23 февраля 2012

Мне нужно было использовать комбинацию кода из @mindandmedia и @Fabian.

Вот что у меня сработало:

var code; 

$('input').keyup(function(e) {
    code = (e.keyCode ? e.keyCode : e.which);
    if(code == 9) {
        return false;
    }
});

$('#myForm').validate();

$('input').blur(function() {
    if( !$(this).valid() ) { 
         $(this).next('label.error').show();                
    }
});
1 голос
/ 21 февраля 2012

Это работает лучше:

$(document).ready(function() {
    $('#myForm').validate();

    //$('#myForm').valid();
    $('#myForm').hideErrors();

    $('input').blur(function() {
        if( !$(this).valid() ) $(this).next('label.error').show();                
    });
});​
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...