Jquery:如何在按Enter键或单击按钮时触发click事件

时间:2014-04-04 17:06:07

标签: javascript jquery

我有一个触发jquery事件的按钮,但只有在单击按钮时才会触发。如果单击它或使用返回键,是否可以使其工作?

$(document).ready(function () {
    var zipCodes = [60538, 60504];
    $("#buttontest").click(function () {
        var zipIndex = zipCodes.indexOf(parseInt($("#full_day").val()));
        $("#zipMessage > div").hide("fast");
        var zipId = zipIndex > -1 ? zipCodes[zipIndex] : "Error";
        $("#zip" + zipId).show("fast");
    });
});

这是一个有效的例子; http://jsfiddle.net/7SPGh

8 个答案:

答案 0 :(得分:6)

只要按钮具有焦点, enter 将触发click事件。我认为你的意思是,如果在文本框有焦点时按下输入,你就想触发点击...

因此,在文本框中添加一个keydown处理程序(fiddle):

$("#full_day").keydown(function(e){
    if(e.which === 13){
        $("#buttontest").click();
    }
});

答案 1 :(得分:1)

您可以将输入和按钮包装到表单元素中以侦听提交事件:

<form id="form">
<input type='text' id="full_day"/>
<input type='submit' id="buttontest" value="Enter Zip Code"/>
</form>

$("#form").submit(function(e){
   e.preventDefault();
   // ...
});

http://jsfiddle.net/nJH3g/2/

编辑:必须将类型从按钮更改为提交以触发提交事件。

答案 2 :(得分:0)

为keypress添加另一个事件侦听器。如果键码是13(这是返回键),则运行该功能。

elem.addEventListener('keypress',function(){someFunc(e);}, false);

function someFunc(e){
if (e.keyCode === 13){

//run  your code

}

这是纯粹的javascript。

答案 3 :(得分:0)

提出你的例子,这就是解决方案:http://jsfiddle.net/7SPGh/7/

$(document).ready(function(){
  var zipCodes = [60538,60504];
  $("#buttontest").click(function(){
   var zipIndex = zipCodes.indexOf(parseInt($("#full_day").val()));
   $("#zipMessage > div").hide("fast");
   var zipId = zipIndex > -1 ? zipCodes[zipIndex] : "Error";
   $("#zip"+zipId).show("fast");

    });
    $("#full_day").keypress(function(e) {
        if(e.which == 13) {
        alert('You pressed enter!');
    }

  });
});

答案 4 :(得分:0)

以下是您的工作示例:

http://jsfiddle.net/3JEKg/

将您想要触发按钮的元素绑定到Enter键按

$('body').bind('keypress',function (event){
  if (event.keyCode === 13){
    $("#buttontest").trigger('click');
  }
});

答案 5 :(得分:0)

为了改进佳能的答案,您可以使用jQuery的on事件绑定到键上或下事件,并查找返回键。然后,您可以检查要触发单击事件的项目是否在焦点上。在这里,我使用了hasClass来检查它是否是一个合适的项目。然后,您可以触发焦点项目上的点击事件。

$(window).on({
    keyup: function (event) {
        if (event.which === 13 && $(':focus').hasClass('item')) {
            $(':focus').trigger('click');
        }
    }
});

答案 6 :(得分:0)

尝试为按键和鼠标点击创建侦听器:

function myFunction(e){
  if (e.which=='13' || e.type=='click'){
    // Run your code here
  }
}
$(document)
  .on('click', '#buttontest', myFunction)
  .on('keypress', this, myFunction);

答案 7 :(得分:-1)

看看this discussion

$('#full_day').keypress(function(e) {
    if(e.which == 13) {
        jQuery(this).blur();
        jQuery('#buttontest').trigger("click");
    }
});