Пересылка событий атрибутов javascript другому обработчику / типу
-
07-07-2019 - |
Вопрос
В настоящее время я пытаюсь настроить веб-страницу для компьютера с сенсорным экраном, и заметил, что (своими толстыми пальцами) события onclick действительно трудно вызвать, так как площадь поверхности моего пальца обычно вызывает курсор двигаться, пока я "нажимаю".
Решение, которое я хочу использовать, - пересылка событий onmousedown в onclick. Как я могу сделать эту работу?
Лучший ответ будет следующим:
<input type="radio" onmousedown="this.onclick()"/>
(но, конечно, в рабочем состоянии)
РЕДАКТИРОВАТЬ: Мой конкретный пример для переключателей - когда один отмечен, другие не отмечены; Я не хочу повторять это поведение в произвольном событии, когда браузер дает его мне бесплатно.
ПРИМЕЧАНИЕ. После редактирования и получения обратной связи я думаю, что, возможно, я ошибся: возможно, это не " нажмите " функция на переключателе, которая фактически делает выбор: приветствуются новые предложения ...
Решение
Хорошо, после ваших изменений все становится более понятным - вам нужно смоделировать пользователя, нажимающего на элемент управления, когда происходит событие mousedown
. Р>
Два варианта:
<Ол> onmouseout = < this.checked = true; "
, т. е. щелкнув переключатель "флажки" / выбирает переключатель. Другие советы
Почему бы просто не обработать событие mousedown
?
Я знаю, что вы не упомянули об этом в вопросе, но если бы вы использовали jQuery, это было бы действительно очень просто:
$().live('mousedown', function() { this.click(); });
Может быть, это работает для вас
document.getElementById("yourinput").onmousedown = function() {
this.click();
}
Кроме того, вы можете сделать так, чтобы ваши кнопки / поля ввода были немного больше, для лучшего доступа через указатель.
Лучше иметь одну функцию для обработки обоих событий, например
.var function = foo(e) {
...
};
<input onclick="foo();" onmousedown="foo();"/>
Лучше все же использовать ненавязчивый JavaScript, например, (если вы использовали YUI):
<input id="input-el"/>
var function = foo(e) {
...
};
var Event = YAHOO.util.Event;
Event.on('input-el', 'click', foo);
Event.on('input-el', 'mousedown', foo);