繁体   English   中英

jQuery autocomplete。当您具有autocomplete并按“ enter”时,我不想搜索,实际上它会搜索

[英]jquery autocomplete .When you have the autocomplete and press 'enter',i do not want to search ,actually it will do search

输入自动完成功能,您按“ enter”键,我会搜索内容。但是当您具有自动完成功能并按“ 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' />

当您触发自动完成并通过按“ enter”键选择一个项目时,它将执行自动完成并回填所选的值,但是它还会调用第二个函数“ pressEnter(e)”。实际上,我想在您触发了自动完成功能,但不执行第二个功能(按Enter)。

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

您可以捕获该事件并阻止其传播。 然后将不再进行扩展,也不会调用附加到例如包装元素的其他事件处理程序(如您的第二个函数)。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM