我在日志中注意到并仔细检查了我的键盘,当您在文本字段中输入所需的值并按下一个键时,键盘键Enter似乎粘住了,PHP 脚本工作了 5-20 次。当您用鼠标单击按钮时,没有这样的事情Поиск。
如何避免这种情况?是否可以使用 JS 来实现?
将 jQuery 处理程序应用于文本字段:
var myobj = {
txtSearch: $('#txtSearch'),
btnSubmit: $('#btnSubmit'),
init: function () {
this.btnSubmit.on('click', this.action.bind(this));
this.txtSearch.on('keyup', this.action.bind(this));
},
action: function (e) {
//проверяем клик по кнопке или энтер
if (e.keyCode !== 13 && e.type !== 'click') {
return;
}
this.disableForm();
//getAjax()
},
getAjax: function (code) {
$.ajax({...})
.done(function (r) {
this.enableForm();
}.bind(this));
},
disableForm: function () {
this.btnSubmit.attr('disabled', 'disabled');
this.txtSearch.off('keyup', this.action.bind(this));
},
enableForm: function () {
this.btnSubmit.removeAttr('disabled');
this.txtSearch.on('keyup', this.action.bind(this));
},
};
单次击键的截图Enter,也就是问题很明显:
更新:发现一个问题,按回车的时候关闭了form this.txtSearch.off('keyup', this.action.bind(this));
,然后在加载结果的时候又重新打开this.txtSearch.on('keyup', this.action.bind(this));
我认为处理程序被删除然后重新连接。实际上,处理程序并没有被删除,而是成倍增加。