2015-04-07 6 views
2

Есть ли способ определить, как нажата кнопка?определить, как кнопка была нажата в javascript

  • мыши щелкнула // событие мыши
  • выделен с помощью вкладки введите ключ // нажатие клавиши событие
  • прикоснулся (мобильные телефоны) // сенсорного событие

Есть короткий путь к Javascript обнаружить это? Или мне нужно добавить прослушивателей событий для нажатия, ввода и касания? Я хочу получить данные для отправки форм. Спасибо

+0

Что вы подразумеваете под «коротким javascript способом»? – Data2000

+0

Я не могу догадаться, зачем вам это нужно. Что такое цель? – lv0gun9

ответ

0

По моему опыту, «войти» и «коснуться» также запускает «щелчок».

Я думаю, что можно добавить прослушиватель событий, чтобы «щелкнуть», чтобы обрабатывать все необходимые события.

попробовать здесь: https://jsfiddle.net/wvv2v8r2/

<input type="submit" value="test click" /> 

$('input').click(function(){ 
    alert('clicked'); 
}); 
+0

Я был шокирован тем, что ввел нажатый щелчок!?!? Я проверил его после прочтения вашего ответа. +1 –

+0

Все они запускают клик, но разве вы не спрашивали, как определить, что это такое? –

+0

@Whathaveyoutried да, я просто дал +1 не правильный ответ, потому что я узнал что-то новое? –

0

нажмите и потрогать вы можете справиться с помощью OnClick но выделен с помощью вкладки введите ключ, вы должны отдельный код

2

Это, как вы можете ручка для

выделены с помощью вкладки затем ввести ключ // нажатие клавиши событие

$('a').click(function(e) { 
    console.log(e); 

    // Screen Positions returns 0 on enter 
    if(e.screenX == 0 && e.screenY == 0) { 
     alert('Enter'); 
    } 
    else if(e.type == "click") { 
     alert('click'); 
    } 
}); 

DEMO Из-за остального вы легко обнаружите.

+0

Мне нужно только на ощупь, но пока это потрясающе! Можете ли вы рассказать мне, почему экранные позиции возвращают 0 при вводе? Это обычное поведение JavaScript? –

+0

@Deadpool событие может произойти именно в этом месте, когда элемент нажат или щелкните. Итак, его возвращение (0, 0) на вход. –

0

Все события mousedown, click и key press событие вызовет только событие click. Нет необходимости иметь три разных прослушивателя событий.

Если у вас есть все три обработчика событий, порядок выполнения будет отличаться.

keypress, сначала keypress будет стрелять тогда click.

Если у вас есть mousedown, то сначала mousedown, после чего начнется click.

document.querySelector("#button").addEventListener("click", function(event) { 
    console.log("click"); 
}, false); 

document.querySelector("#button").addEventListener("mousedown", function(event) { 
    console.log("mousedown"); 
}, false); 

document.querySelector("#button").addEventListener("keypress", function(event) { 
    var keyCode = event.keyCode || event.which; 
    if(keyCode===13) { 
    console.log("enter pressed"); 
    } 
}, false); 

DEMO

В демке вы заметите, что все они относятся к click события в конце.

Так что лучше всего просто пойти с самим событием клика.

Смежные вопросы