Смешение свойств ключа события Javascript в FF - PullRequest
0 голосов
/ 21 сентября 2010

Это действительно странная ошибка. В Chrome (6.0.472.62, последний) и IE8 (по крайней мере) это ведет себя правильно, но в FF (3.6.9, последний) и событие click, и ввод регистра событий, что затрудняет различение поведения. *

Проверьте этот код: http://jsfiddle.net/QmkwY/1/, нажмите на поле поиска в «результатах» и просто нажмите Enter. Результаты внизу должны регистрироваться click event: 1 enter event: 13, что явно неверно.

У меня происходят разные события для событий щелчка и ввода событий на моей странице, поэтому, когда событие ввода регистрируется как событие щелчка, вы можете представить себе разочарование!

У кого-нибудь есть умное решение?

Ответы [ 3 ]

1 голос
/ 21 сентября 2010

В clickEvent вы можете проверить e.pageX и e.pageY, чтобы убедиться, что у них есть значения, чтобы увидеть, был ли он фактически нажат.

if (e.pageX == 0 && e.pageY == 0)
{
    return;
}

Но это также повлияет на "нажатие" кнопки через пробел. Если это не так, вам нужно привязать пробел к кнопке отдельно.

$('#button').keyup(function (e)
{
    if (e.which == 32)
    {
        // do something
    }
}
0 голосов
/ 21 сентября 2010

Хорошо, когда ваша кнопка скрыта, я получаю только событие ввода, а не событие нажатия в Chrome.Однако, когда я показываю кнопку, я получаю оба.Я также вставил кнопку между вашей кнопкой и вводом, и это не вызывает событие click.

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

0 голосов
/ 21 сентября 2010

Вы связываете событие с '#button', это должно быть '# search'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...