2012-03-11 55 views
1

我试图让我的<a>标记在用户按下“enter”键时触发。 (onkeypress)onkeypress on <a>标记

<a>标签:

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

这是我的javascript

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

     } 
    } 

我不知道什么搞砸了?

+0

hiya,快速的建议:什么是HREF哪些JavaScript的呢?尝试它没有href请。希望这有助于 - http://www.w3schools.com/jsref/event_onkeypress.asp;你是否也可以尝试使用警报或调试器来查看你的运行脚本是否被调用,如果你JSFiddle它,我可以看到我们如何击倒这个东西。欢呼 – 2012-03-11 08:05:06

+0

如果我评论“href”其仍然不会工作.. – thormayer 2012-03-11 08:16:10

+0

抱歉的人 - 我的意思是把#而不是JavaScript搜索 - 但似乎你得到它的工作。 – 2012-03-11 08:19:52

回答

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'); 
    } 

http://jsfiddle.net/diode/hfJSn/9/show按回车键IVE演示:(?也许)fiddle

0

你有没有试过把它添加到脚本中?

document.onkeypress = runScript;

2

ENTER键实际上触发onclick事件:

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

这意味着你的搜索()在href内部函数将onkeypress事件事件之前执行。

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; 
} 

在这里看到一个演示:当页面加载

+0

小调:我相信你的意思是建议设置一个tabindex为0,而不是1. Zero将确保该元素是可放置和可聚焦的,-1将使其可聚焦但不可放置,并且任何超过0的数字声明一个明确的位置标签序列,这是很少需要的。 – Semicolon 2016-02-13 00:45:55

1

,在我的浏览器,工作虽然我怀疑这是不是达到你真正想做的......什么方式

一把手,你可能不希望它到“return”任何东西,所以你可以做onkeypress="runScript(e)",它会运行。如果这个函数确实返回一个值,它不会去任何地方......第二个,一个keydown事件会在一个锚点(<a>)元素上触发,这很少见,除非用户通过其他元素直到它有焦点然后按下一个键(通常浏览器会“突出显示“当前具有键盘焦点的元素,如果它不仅仅是整个页面)。在某个搜索框输入内容后按某个输入键时,是否希望脚本运行?如果是这样,您可能希望在搜索框本身监听事件,因此如果您只是希望它在用户按下Enter键时运行,无论焦点还是输入文本,都可以将其添加为该元素的onkeydown属性(例如:<input id="mySearchBox" onkeydown="runScript(e)">)到任何特定的领域,只要按照edmastermind29的评论说的去做,并将事件监听器添加到整个文档中。