onkeypress на теге <a> - PullRequest
       7

onkeypress на теге <a>

1 голос
/ 11 марта 2012

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

мой <a> тег:

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

это мой javascript :

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

      }
   }

Я не знаю, что напуталовверх?

Ответы [ 5 ]

4 голосов
/ 11 марта 2012

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

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

* 1005 JavaScript *

 window.runScript = function (e) {

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

           return true;
       }
   }

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

живое демо : скрипка

3 голосов
/ 11 марта 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 нажмите клавишу ввода, когда страница загружена

2 голосов
/ 11 марта 2012

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

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

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

1 голос
/ 11 марта 2012

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

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

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

0 голосов
/ 11 марта 2012

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

document.onkeypress = runScript;

...