按Enter键进入jQuery函数

时间:2018-03-09 17:28:06

标签: javascript jquery

我很难完成这项工作并了解如何通过在Javascript中按Enter来调用特定按钮。

例如我有

$(document).ready(function () { 
    $('#myText').keyup(function () {
       alert(e.keyCode); 
    });

    $('#myButton').button().click(function () {
       alert('Button click 1!');
    });

    $('#myButton2').button().click(function () {
       alert('Button click 2!');
    });
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<form action="#">
<button id="myButton">Button</button>
<button id="myButton2">Button2</button>
<input type="text" id="myText" />
</form>

当我在Mytext值中按Enter键时如何制作它点击myButton2?

样本: http://jsfiddle.net/WZ6TM/610/

更新:

以下答案没有按预期工作,请参阅我的代码结构:

$(document).ready(function () {

    $('input#manualuser').keyup(function(e) {
        if (e.keyCode === 13) $('#search').click();
      });


    $('#search').click(function search() {
        if ($("input#manualuser").val() === '') {

            $('#infostatus').html("<label id='infostatus' class='info'>Please Enter Username</label>");

        }
        else {
            $.ajax({
                url: "https://" + $seldom + ":443/api/example/" + $("input#manualuser").val(),
                type: "GET",
                dataType: 'Jsonp',
                success: function (result) {....

3 个答案:

答案 0 :(得分:1)

问题是按Enter键(keydown事件)的默认操作是'激活'焦点项(实际上是button1)。您需要防止默认值。然后按照以下方式自定义您的活动。

这里的代码段

http://jsfiddle.net/WZ6TM/637/

$(document).ready(function () { 

$('#myText').keydown (function(e) {
 if(e.which == 13) {  
e.preventDefault();
}
});

$('#myText').keyup(function (e) {
e.preventDefault();

  if(e.which == 13) {   
$("#myButton2").trigger('click');

}

});

$('#myButton').button().click(function () {
   alert('Button click 1!');
});

$('#myButton2').button().click(function () {
   alert('Button click 2!');
});
});

在示例中,如果您使用Enter关闭对话框,则会再次启动事件,因此请注意并且不要认为这是在循环或其他事情。它实际上是有效的,我希望你了解发生了什么。

干杯

答案 1 :(得分:0)

您需要抓住表单提交

$('form').submit(function(e){
  e.preventDefault();
  $('#mybutton2').click()
})

或者,你可以抓住$(&#39; body&#39;)。keyup()并用它做事。

答案 2 :(得分:-1)

我看到两种可能性。最简单的方法是挂钩提交事件:

$(document).ready(function () { 
  $('form').submit(function (e) {
   e.preventDefault();
   $('#myButton2').click();
  });

  $('#myButton').click(function () {
   alert('Button click 1!');
  });

  $('#myButton2').click(function () {
   alert('Button click 2!');
  });
});

并更改标记,以便默认情况下不会提交按钮:

<form action="#">
<button type="button" id="myButton">Button</button>
<button type="button" id="myButton2">Button2</button>
<input type="text" id="myText" />
</form>

另一种方法是使用keydown并监听回车键。但是,我不建议使用这种方式,因为监听特定的密钥代码会使您的代码更难以推理。

http://jsfiddle.net/WZ6TM/644/ 编辑:提供小提琴