0

我有以下代码 - http://jsfiddle.net/vcvsb/1/ - 每

$(document).ready(function(e) {
    $("input#autocomplete").autocomplete({
        source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
    });
    jQuery("#autocomplete").keypress(function (e) {
        if (e.keyCode == 13) {
          $('#buttontest').trigger('click');
          alert('crap, clicked');  
        }
    });
  });

我正在尝试对其进行设置,以便用户可以使用箭头键向下移动 - 按 Enter 键,然后继续输入。我面临的问题是,一旦用户在获得自动完成响应后选择输入,它就会触发按钮单击?

我该如何设置它以便:

  1. 用户可以使用箭头键移动到一个选择,然后按 Enter
  2. 按回车后,用户可以继续输入
  3. 如果用户再次点击回车,它会触发点击

?

4

2 回答 2

0

有点像黑客,但可以工作http://jsfiddle.net/amantur/hhUdV/。您需要计算按 ENTER 的次数。当它是第二次触发按钮点击时。

于 2011-09-18T14:39:32.733 回答
0

最好的解决方案是检查是否有焦点在您的任何输入字段上,否则忽略 ENTER。使用 jQuery >= 1.6,您可以执行以下操作:

if(e.keyCode == 13) {
    if($("#input").is(":focus")) {

      // then click the button
      $("#button").click();
    }

}

这将忽略任何其他 ENTER 事件,而不是您想要的事件;)

于 2012-05-06T21:21:25.660 回答