Использование 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
}
},
В коде выше, я связываю SearchBox на 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);
});
},
В первом 'event.preventDefault()' в теле вы произнесли его 'event.peventDefault()'. – MasterBob
В его коде написано правильно. –
попробуйте 'unbind' перед связыванием другой функции с тем же объектом –