onkeypress на теге ‹a›

Я пытаюсь запустить свой тег <a>, когда пользователь нажимает клавишу «Ввод». (onkeypress).

мой тег <a>:

<a href="javascript:search()" onkeypress="return runScript(event)">

это мой javascript:

 function runScript(e)
   {
        if (e.keyCode == 13) {
                alert("dssd");
        return false;

      }
   }

Я не знаю, что напутано?


person thormayer    schedule 11.03.2012    source источник
comment
Привет, быстрое предложение: что это за href, какой в ​​нем javascript? попробуйте без href, пожалуйста. надеюсь, это поможет - w3schools.com/jsref/event_onkeypress.asp; Вы также можете попробовать поставить оповещение или отладчик, чтобы увидеть, вызывается ли ваш сценарий запуска, если вы JSFiddle, я вижу, как мы можем сбить эту вещь. ваше здоровье   -  person Tats_innit    schedule 11.03.2012
comment
если я прокомментирую href, он все равно не будет работать.   -  person thormayer    schedule 11.03.2012
comment
извините, чувак, я имел в виду поставить # вместо поиска javascript, но, похоже, у тебя все работает.   -  person Tats_innit    schedule 11.03.2012
comment
Почему вы вообще используете элемент A? Они должны быть якорями или ссылками, а не кнопками.   -  person RobG    schedule 11.03.2012


Ответы (5)


это работа для меня

 <a href="javascript:search();"  onkeypress="return runScript(event);">Open in new window using javascript</a>

JavaScript

 window.runScript = function (e) {

       if (e.keyCode == 13) {
           alert('ss');
           return false;
       }
       else {

           return true;
       }
   }

   window.search = function () {
       alert('s');
   }

демонстрация: fiddle

person Jignesh Rajput    schedule 11.03.2012

Напишите свой html, как указано ниже. Обратите внимание на свойство tabindex, которое делает тег доступным для фокуса в определенных браузерах.

<a id="link" href="http://google.com" onkeydown="runScript(event)" tabindex="1">I am a link</a>

Если вам нужен автофокус при загрузке, вы можете использовать функцию jQuery focus, как показано ниже.

$(document).ready(
    function(e){
        $("#link").focus();
    }
);

Тогда ваша функция

function runScript(e){
    if(e.keyCode == 13){
       alert("pressed enter key");
    }
}

вам нужно вызвать e.preventDefault(); (или вернуть false в некоторых браузерах), если вы хотите, чтобы ссылка не загружала ссылку в href.

function runScript(e){
    e.preventDefault();
    if(e.keyCode == 13){
       alert("pressed enter key");
    }
    return false;
}

посмотреть демо здесь: http://jsfiddle.net/diode/hfJSn/9/show нажмите клавишу ввода, когда страница загружается

person Diode    schedule 11.03.2012
comment
Небольшое примечание: я полагаю, что вы хотели предложить установить tabindex равным 0, а не 1. Ноль гарантирует, что элемент является как табублируемым, так и фокусируемым, -1 сделает его фокусируемым, но не табулируемым, а любое число больше 0 объявляет явную позицию в последовательность табуляции, которая редко бывает желательной. - person Semicolon; 13.02.2016

Клавиша ENTER фактически запускает событие onclick:

<a href="#" onclick="alert('hello!');">

Это означает, что ваша функция search() внутри href будет выполняться до события onkeypress.

person Reinaldo    schedule 11.03.2012

Это работает в моем браузере, хотя я подозреваю, что это не способ добиться того, что вы на самом деле хотите сделать... (может быть?)

Во-первых, вы, вероятно, не хотите, чтобы он делал что-либо "return", поэтому вы можете просто сделать onkeypress="runScript(e)", и он запустится. Если эта функция возвращает значение, она никуда не денется...

Во-вторых, довольно редко событие нажатия клавиши срабатывает на якорном (<a>) элементе, если, конечно, пользователь не просматривает другие элементы, пока не получит фокус, а затем не нажмет клавишу (обычно браузер «выделяет» элемент который в настоящее время имеет фокус клавиатуры, если это не только вся страница). Вы хотите, чтобы ваш скрипт запускался, когда кто-то нажимает ввод после ввода в поле поиска или что-то в этом роде? если это так, вы, вероятно, захотите прослушать событие в самом окне поиска, поэтому добавьте его в качестве атрибута onkeydown этого элемента (например: <input id="mySearchBox" onkeydown="runScript(e)">), если вы просто хотите, чтобы оно запускалось всякий раз, когда пользователь нажимает ввод, независимо от фокуса или ввода текста в любое конкретное поле, просто сделайте так, как сказано в комментарии edmastermind29, и добавьте прослушиватель событий ко всему документу.

person JKing    schedule 11.03.2012

Вы пробовали добавить это в свой скрипт?

document.onkeypress = runScript;

person Community    schedule 11.03.2012