使用events.peventDefault()
和events.stopPropagation()
,无法阻止网页重新加载。
bindSearch: function() {
var val = null;
var input = null;
config.bindThis('chatSearchFriends', 'body', 'searchBar', function(value, events) {
input = $(value);
val = $(input).val();
timer = setTimeout(doSearch, 1000);
config.showThis('clearSearch');
var keycode = (events.keyCode ? events.keyCode : events.which);
if (keycode == '13' && !events.shiftKey) {
//prevent page reload
events.stopPropagation();
events.preventDefault();
console.debug('enter');
}
});
config.bindThis('chatClearSearch', 'body', 'clearSearch', function(value, events) {
//clear search text
});
function doSearch() {
//fetch matched search
}
},
在上面的代码中,我在 keyup 事件(chatSearchFriends)
上绑定搜索框。
当用户输入时,如果按下输入键,则页面不应重新加载,这是我的担忧。
无论用户是否按下输入,ajax都会在1秒后获取匹配的数据。这是通过以下行完成的:timer = setTimeout(doSearch, 1000);
因此按Enter键只能停止重新加载页面。我不确定为什么以上都没有阻止它。
bindThis:
bindThis: function(eventKey, bindTo, selectorKey, callback, bindOnceOnly = false) {
this.unBindThis(bindTo, eventKey);
if (bindOnceOnly) {
this.getSelectorDOM(bindTo).one(this.events[eventKey], this.selectors[selectorKey], function(e) {
callback(this, e);
});
return;
}
this.getSelectorDOM(bindTo).on(this.events[eventKey], this.selectors[selectorKey], function(e) {
callback(this, e);
});
},
答案 0 :(得分:4)
在上面的代码中,我在keyup事件(chatSearchFriends)上绑定了searchbox。
您无法停止按键上的按键传播。该事件已经发生。它必须在keydown或keypress上。