Вы можете использовать событие keypress
.
Чтобы определить, какой символ был введен, изучите объект события, который передается в функцию-обработчик. Хотя браузеры используют разные свойства для хранения этой информации, jQuery нормализует свойство .which, чтобы вы могли надежно использовать его для получения кода символа.
function alertTag( tag ){
alert("The element was " + $(tag).prop("tagName"));
}
$(document).ready(function() {
$("p, div, span, h1, button, a").click(function(e) {
alertTag(e.target);
}).keypress(function(e) {
if (e.which == 13) {
e.preventDefault(); // optionally
alertTag(e.target);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p tabindex="0">Click on this paragraph.</p>
<div tabindex="0">Click on this div.</div>
<span tabindex="0">Click on this span.</span>
<h1 tabindex="0">Click on this h1.</h1>
<button> Click on this button.</button> <br>
<a href="#"> Click on this anchor </a>
Если вы хотите использовать один и тот же метод для всех элементов (хотя я не вижу в этом смысла), вам нужно включить e.preventDefault()
. В противном случае, нажав , введите , и вы вызовете события click
и keypress
.
Альтернативой может быть принудительное использование элементов p
, div
, span
и h1
для запуска события click
при нажатии для ввода на них:
$(document).ready(function() {
$("p, div, span, h1, button, a").click(function(e) {
alert("The element was " + $(e.target).prop("tagName"));
});
$("p, div, span, h1").keypress(function(e) {
if (e.which == 13) {
$(e.target).trigger('click');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p tabindex="0">Click on this paragraph.</p>
<div tabindex="0">Click on this div.</div>
<span tabindex="0">Click on this span.</span>
<h1 tabindex="0">Click on this h1.</h1>
<button> Click on this button.</button> <br>
<a href="#"> Click on this anchor </a>
Если вы действительно хотите сделать это для всех тегов HTML (даже если я думаю, что это не очень хорошая идея), вы можете сделать следующее.
$("body *").keypress(function(e) {
if (e.which == 13) {
$(e.target).trigger('click');
}
});
Затем все элементы будут реагировать на ввод , как они реагируют на щелчок. Но вы должны попытаться заменить body *
на селектор, который охватывает только те элементы, которые вы хотите. Например, вы можете добавить класс .enterTriggersClick
к целевым элементам и затем сделать:
$(".enterTriggersClick").keypress(function(e) { ...