9

我有一个锚标签

<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 上进行这项工作?

4

3 回答 3

3

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

jQuery 规范化event传递给事件处理程序的对象并修复这样的“问题”,这样您就不必担心。同时,它似乎复制了一些原始事件的属性(“原始事件的大多数属性都被复制并规范化为新的事件对象。” - 来自 jQuery API 文档)。这可能就是为什么它对其他评论/回答的人“起作用”的原因。传递给处理程序的event参数已由 jQuery 生成/规范化,并且使用正确的属性将拥有您需要的一切。但是,正确的方法是用于event.which获取事件的规范化键码。http://api.jquery.com/event.which/

$(document).ready(function () {
    $(document).on("keyup", function (event) {
        if (event.which == 13) {
            $("#clicking").trigger('click');
        }
    });
});
于 2012-12-10T09:24:53.933 回答
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

于 2012-12-10T09:24:30.793 回答
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();
    }
  })
});
于 2012-12-10T11:40:02.233 回答