【问题标题】:onkeypress on a <a> tag<a> 标签上的 onkeypress
【发布时间】:2012-03-28 01:04:16
【问题描述】:

我正在尝试在用户按下“回车”键时触发我的&lt;a&gt; 标签。 (onkeypress).

我的&lt;a&gt; 标签:

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

这是我的 javascript

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

      }
   }

不知道怎么回事?

【问题讨论】:

  • 嗨,快速建议:href 中的哪个 javascript 是什么?请尝试不带href。希望这会有所帮助-w3schools.com/jsref/event_onkeypress.asp;您是否也可以尝试放置警报或调试器以查看您的运行脚本是否被调用,如果您 JSFiddle 它,我可以看到我们如何将这个东西击倒。欢呼
  • 如果我评论“href”它仍然不会工作..
  • 对不起,我的意思是放 # 而不是 javascript 搜索,但您似乎可以正常工作。
  • 你为什么要使用 A 元素?它们是锚点或链接,而不是按钮。

标签: javascript onkeypress


【解决方案1】:

这在我的浏览器中有效,但我怀疑这不是实现您真正想要做的事情的方式......(也许?)

第一,你可能不希望它“return”任何东西,所以你可以做onkeypress="runScript(e)"它会运行。如果该函数确实返回了一个值,那么它不会去任何地方......

第二,keydown 事件很少会在锚点 (&lt;a&gt;) 元素上触发,除非用户在其他元素之间切换,直到它获得焦点然后按下一个键(通常浏览器会“突出显示”当前具有键盘焦点的元素,如果它不仅仅是整个页面)。您是否希望有人在输入搜索框或其他内容后按 Enter 键时运行脚本?如果是这样,您可能希望在搜索框本身上监听事件,因此如果您只想在用户按下回车时运行它,请将其添加为该元素的 onkeydown 属性(例如:&lt;input id="mySearchBox" onkeydown="runScript(e)"&gt;),而不管焦点或在任何特定字段中输入文本,就像 edmastermind29 的评论所说的那样,并将事件侦听器添加到整个文档中。

【讨论】:

    【解决方案2】:

    它对我有用

     <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 标签在某些浏览器中具有焦点。

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

      如果你想阻止链接加载href中的链接,你必须调用e.preventDefault();(或在某些浏览器中返回false)。

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

      在此处查看演示: http://jsfiddle.net/diode/hfJSn/9/show页面加载时按回车键

      【讨论】:

      • 次要注意:我相信您的意思是建议将 tabindex 设置为 0,而不是 1。零将确保元素既可标签又可聚焦,-1 将使其可聚焦但不可标签,任何数字超过 0 声明在制表符序列中的显式位置,这是很少需要的。
      【解决方案4】:

      ENTER键实际上触发了onclick事件:

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

      这意味着 href 中的 search() 函数将在 onkeypress 事件之前执行。

      【讨论】:

        【解决方案5】:

        您是否尝试将其添加到您的脚本中?

        document.onkeypress = runScript;

        【讨论】:

          猜你喜欢
          • 2023-03-26
          • 1970-01-01
          • 2012-09-14
          • 1970-01-01
          • 2012-11-03
          • 2021-03-03
          • 2013-06-24
          • 1970-01-01
          相关资源
          最近更新 更多