Определить автоклик браузера - PullRequest
1 голос
/ 21 октября 2011

У меня есть некоторые проблемы в реализации моего плагина jquery.Мне нужен плагин, который показывает мне некоторый элемент (всплывающее окно) и скрывает его, когда я щелкаю за пределами этого элемента.

Я реализовал этот плагин.Но у меня проблемы с формами в popup.Когда я вычисляю координаты элемента, по которому щелкнули, я использую свойства pageX и pageY.

Но при попытке отправить форму с помощью клавиши ENTER несколько интересных моментов.Когда я нажимаю ENTER, браузер вызывает событие «click» на кнопке отправки, но pageX и pageY этой кнопки равно 0. В event.target я вижу свою кнопку.

Когда я сам нажимаю кнопку подтверждения- все в порядке.

Вопрос: как определить, кто нажал эту кнопку?Пользователь или браузер?(без всплесков, таких как обнаружение клавиши ввода на вводе и т. д.)

Дополнительно: как вы можете видеть здесь события различны (при нажатии на кнопку отправки и нажатии ENTER).Но разница настолько мала ... Я вижу только то, что свойство 'detail' имеет значение 0, когда мы отправляем форму с помощью ENTER.Свойство detail - это количество нажатий на элемент для события мыши.

Это единственный способ обнаружить отправку?Это правильно?

Ответы [ 2 ]

3 голосов
/ 21 октября 2011

Если вы привязываете обработчик щелчка к событию щелчка, а затем вызываете щелчок программно, а также по щелчку пользователя и хотите различать два события в обработчике, вы можете проверить событие eventObject.originalEvent, которое установлено в пользователь нажимает, но не вызывает .click ().

Пример:

$('#el').click(function(evt){ if(evt.originalEvent){ //user click } else { // .click() call } });

2 голосов
/ 21 октября 2011

Как насчет тестирования на pageX == 0 AND pageY == 0?

Или даже лучше, если предположить, что это форма (это вытекает из вашего поста), почему бы не использовать .submit() вместо .click()?

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