@reech

Как обработать два события для двух элементов?

Есть строка поиска с кнопкой. Как на jquery без дублирования кода обработать и нажатие enter, и клик по кнопке?
Обработчик одинаковый для двух действий.
  • Вопрос задан
  • 112 просмотров
Решения вопроса 2
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
function send() { .... }

$('input').on('keypress', send);
$('button').on('click', send);
Ответ написан
Комментировать
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Обработчик вынести в отдельную функцию. А дальше есть несколько вариантов:
<input type="text">
<button>Click me!</button>

Вариант 1
function handler() {
    console.log('Do something');
}
$('input').on('keyup', function(e) {
    if (e.which === 13) {
        handler();
        // или 
        // handler.call(this);
    }
});
$('button').on('click', handler);

Вариант 2
function handler() {
    console.log(this);
}
var but = $('button');
$('input').on('keyup', function(e) {
    if (e.which === 13) {
        but.trigger('click');
    }
});
but.on('click', handler);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lega
Обычно используют форму + кнопку submit, в итоге ентеры, клики и т.п. выливаются в одно событие "submit" на форме.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы