使用jquery ui自动完成小部件时,请停止“输入”密钥提交表单

时间:2011-08-30 00:08:57

标签: jquery asp.net webforms jquery-autocomplete

我有一个使用jquery自动完成UI插件http://jqueryui.com/demos/autocomplete/的表单,除了当您按下回车键选择自动完成列表中的项目时,它都可以正常工作,它提交表单。

我在.NET webforms网站中使用它,因此可能存在与.NET注入的表单相关联的javascript处理,它覆盖了jQuery的东西(我在这里推测)。

7 个答案:

答案 0 :(得分:15)

您可以在其上使用事件处理程序。

$("#searchTextBox").keypress(function(e) {
    var code = (e.keyCode ? e.keyCode : e.which);
    if(code == 13) { //Enter keycode
        return false;
    }
});

请参阅:jQuery Event Keypress: Which key was pressed?

另外:http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/javascript-char-codes-key-codes.aspx代码列表

答案 1 :(得分:5)

$("#autocomplete_field_id").keypress(function(event){
  var keycode = (event.keyCode ? event.keyCode : event.which);
  if (keycode == '13') {
    event.preventDefault();
    event.stopPropagation();    
  }
});

答案 2 :(得分:4)

一种方法是处理按键,如果是回车键则忽略它。

答案 3 :(得分:2)

答案王牌帖子帮助我解决了我的问题。虽然您应该注意到{ace}提供的代码必须在$('input').autocomplete(*****)之前存在,否则您将不会收到任何效果。

答案 4 :(得分:2)

如果您仍希望在完成自动填充选择后提交回车键,

if (evt.keyCode === 13 && !$('.ui-autocomplete').is(':visible')) {
   $('.ui-button:first').click();
}
evt.stopPropagation();

答案 5 :(得分:0)

您可以尝试以下方法:

Date

这将仅在输入文本框中禁用Enter键

答案 6 :(得分:0)

一行代码:

module.exports.provider = serverless => {
  // The `serverless` argument containers all the information in the .yml file
  const provider = serverless.service.provider;

  return Object.entries(provider).reduce(
    (accumulator, [key, value]) => ({
      ...accumulator,
      [key]:
        typeof value === 'string'
          ? {
              lowercase: value.toLowerCase(),
              uppercase: value.toUpperCase()
            }
          : value
    }),
    {}
  )
};

此处与接受的答案不同的三件事:

  1. jQuery使npm run build 标准化,因此无需测试$("#searchField").on('keypress', (event) => event.which !== $.ui.keyCode.ENTER); event.which
  2. 由于您显然使用的是jQuery UI,因此您可以通过event.keyCode访问命名的键控代码,从而使其更具可读性。
  3. ES6箭头函数语法进一步简化了代码。