onkeypress на теге <a>

1

Я пытаюсь получить тег <a>, который запускается, когда пользователь нажимает клавишу "enter". (onkeypress).

my <a> тег:

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

это мой javascript:

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

      }
   }

Я не знаю, что испортилось?

  • 0
    Хия, быстрое предложение: что это за HREF, какой javascript в нем? попробуйте без href, пожалуйста. надеюсь, это поможет - w3schools.com/jsref/event_onkeypress.asp ; Можете ли вы также попробовать поставить оповещение или отладчик, чтобы увидеть, запускается ли ваш скрипт запуска, если вы его JSFiddle, я вижу, как мы можем сбить эту штуку. ура
  • 0
    если я прокомментирую "href", он все равно не будет работать ..
Показать ещё 2 комментария
Теги:
onkeypress

5 ответов

4
Лучший ответ

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

 <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

3

Напишите свой 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 нажмите клавишу ввода при загрузке страницы

  • 0
    Небольшое примечание: я полагаю, что вы хотели предложить установить tabindex 0, а не 1. Ноль будет гарантировать, что элемент может быть как табулируемым, так и фокусируемым, -1 сделает его фокусируемым, но не табулируемым, а любое число свыше 0 объявляет явную позицию в последовательность вкладок, которая редко желательна.
2

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

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

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

1

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

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

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

0

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

document.onkeypress = runScript;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню