【问题标题】:jquery autocomplete .When you have the autocomplete and press 'enter',i do not want to search ,actually it will do searchjquery自动完成。当你有自动完成并按'enter'时,我不想搜索,实际上它会搜索
【发布时间】:2025-11-23 08:40:01
【问题描述】:

输入自动完成,你按'enter'键,我会搜索一些东西。但是当你有自动完成并按'enter'时,我不想搜索,实际上当你按'enter'时它会搜索,因为它会捕获回车事件并执行搜索功能。

这是第一个功能:自动完成代码:

$('input[name=fieldInputName]').autocomplete(names, {
         max: max,    
         minChars: minChars ,   
         width: 149,     
         scrollHeight: 500,   
         matchContains: true,    
         autoFill: false, 
         sortable: true,
         matchSubset :false,
         formatItem: function(row, i, max) {
             return  row[returnSearchkey];
         },
         formatMatch: function(row, i, max) {
             return row[returnSearchkey] ;
         },
         formatResult: function(row) {
            return row[returnSearchkey];
         }
     }).result(function(event, row, formatted) {

     });

这是第二个功能:进行搜索的 pressenter 代码:

function pressEnter(e){
        e = e || event;
        if (e.keyCode == 13) {
        submitSearch()();
        }
} 

输入的Html:

 <input onkeyup="pressEnter(event);"type='text' name='createdBy' />

当您触发自动完成并通过按“输入”选择一项时,它将执行自动完成并填充所选值,但它也会调用第二个函数“pressEnter(e)”。实际上我想当您触发自动完成但不执行第二个功能时按回车(按回车)。

【问题讨论】:

  • 我很难理解你想要做什么,请从代码中删除不相关的部分并将代码的两个部分设置在一个上下文中。示例中没有调用第二个函数。请用简短的句子描述此示例的单个步骤,例如“用户在输入字段中输入字符”
  • 第二个函数: 按下回车就会触发。但是如果你触发了自动完成,选择项目并回车,它会触发第二个功能。实际上,我不想执行第二个功能。

标签: javascript input autocomplete enter


【解决方案1】:

DOM 中的事件从树中的某处开始,一直到元素(捕获阶段),然后它们冒泡到 DOM(冒泡阶段)。

您可以捕获事件并阻止它传播。它不会被进一步传播,也不会调用附加到例如的其他事件处理程序(如您的第二个函数)。包装元素。

在自动完成的事件处理程序中,您应该在事件上调用stopPropagation()。尽管这不适用于所有浏览器。在 IE9 之前的 IE 中,该方法称为 cancelBubble(true)

为了防止浏览器默认行为,您可以执行event.preventDefault()

您可以通过搜索“事件取消”或“事件传播”来了解更多信息,因为这是 JavaScript 中的一个棘手主题

【讨论】: