点击输入按下的锚标记链接

时间:2012-12-10 09:10:45

标签: javascript jquery google-chrome

我有像

这样的锚标记
<a class="btn btn-danger" id="clicking" data-bind="click: $root.enterLocation" href="#">Continue</a>

它在弹出窗口内。我需要按回车键点击此链接。我尝试过以下代码,但它对我不起作用。

$(document).ready(function(){ 
  $(document).keyup(function(event){
    if (event.keyCode == 13){
      $("#clicking").trigger('click');     
    }
  })
});

不确定为什么功能不起作用。我也使用了点击功能同样的结果。它在鼠标点击时正常工作。我需要在输入时自动运行。

以下代码在Firefox中正常运行。

$(document).ready(function () {
  $(document).on("keyup", function (event) {
    if (event.which == 13) {
      document.getElementById("clicking").click();   
    }
  });
}); 

如何在Chrome上完成此工作?

3 个答案:

答案 0 :(得分:3)

我认为问题在于您使用event.keyCode,并非在所有浏览器中都使用event.charCode。有些浏览器会使用event.which甚至不同的event.which,这可能会受到您使用的支持。无论如何,使用jQuery从事件中获取keycode的正常方法是使用event

jQuery规范化传递给事件处理程序的event对象并修复这样的“问题”,这样您就不用担心了。同时,它似乎复制了一些原始事件的属性(“原始事件中的大多数属性被复制并标准化为新的事件对象。” - 来自jQuery API文档)。这可能就是为什么它为其他人评论/回答“工作”的原因。传递给处理程序的event.which参数已由jQuery生成/规范化,并且将使用正确的属性提供您需要的所有内容。但正确的方法是使用$(document).ready(function () { $(document).on("keyup", function (event) { if (event.which == 13) { $("#clicking").trigger('click'); } }); }); 来获取事件的规范化密钥代码。 http://api.jquery.com/event.which/

{{1}}

答案 1 :(得分:0)

我创建了这个JSFiddle:http://jsfiddle.net/egzsf/ 它完美运行我只为Internet Explorer添加了一个备用。

你的弹出窗口是什么样的?也许这是一个iFrame,这将是一个合乎逻辑的解释。

代码:

<a class="btn btn-danger" id="clicking" data-bind="click: $root.enterLocation" onclick="alert('test')" href="#">Continue</a>

$(document).ready(function(){ 
    $(document).keyup(function(e){
        if (e.keyCode == 13){
        $("#clicking").trigger('click');       

        }
    })
});​

更好的选择是使用e.which

答案 2 :(得分:0)

我希望以下代码可以帮助你 代码:

<a class="btn btn-danger" id="clicking" onclick="window.location='index.php'" href="#">Continue</a>

$(function(){
  $('body').keyup(function(e){
    if (e.keyCode == 13){  
      $("#clicking").click();
    }
  })
});