Javascript onkeyup有时会被激发两次
Javascript onkeyup being fired twice sometimes
由于某种原因,我的onkeyup似乎被IE9上的一些人解雇了两次。
我当前的功能如下:
document.getElementById("chatboxtextarea").onkeyup=function(e) {
e = e || window.event;
var msg = document.getElementById('chatboxtextarea').value;
if(e.keyCode != null) {
if (msg.replace(/'r/g, '''''r').replace(/'n/g, '') != "" && e.keyCode == 13) {
var textarea = document.getElementById('chatboxtextarea');
textarea.value = '';
var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();
var tD = curr_hour + ":" + curr_min;
var url = 'http://domain.com/sub/' + kanal + '/' + encodeURIComponent(_aNM) + '/' + encodeURIComponent(_sid) + '/' + encodeURIComponent(_aID) + '/' + encodeURIComponent(_pMsg) + '/' + encodeURIComponent(msg.replace(/'r/g, '').replace(/'n/g, '')) + '/' + encodeURIComponent(_hits);
var data = {};
var callback = function (data) { };
J50Npi.getJSON(url, data, callback);
} else if (msg.replace(/'r/g, '''''r').replace(/'n/g, '') == '') {
var textarea = document.getElementById('chatboxtextarea');
textarea.value = '';
}
}
};
这是一个基本的聊天输入字段。问题是服务器(有时)会接收到来自这些IE9用户的两条消息。
我该如何添加一个检查,以查看人们是否在最后1秒内已经写了一条消息?就像垃圾邮件预防功能一样。。我想这能解决问题吗?
有什么想法吗?
有没有可能有人很快按了两次回车键?
每当我必须执行异步操作时,我都会取消输入。
在您的keycode==13检查之后,首先检查textares是否已经被禁用,如果它被禁用,则忽略任何进一步的处理。其次,将文本区域设置为禁用。第三,J50Npi.getJSON()操作成功后,删除禁用属性;
textarea.setAttribute("disabled","disabled");
textarea.removeAttribute("disabled");
http://jsfiddle.net/Tnwje/1/
相关文章:
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- 如何避免在树上走两次
- button.单击两次删除附加操作后不工作
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 单击元素两次后执行操作
- AngularJs正在阻止链接被点击两次
- 为什么我的路线处理程序会触发两次
- 为什么Highchart在我的rails应用程序中加载了两次?(未捕获的Highcharts错误#16)
- 在列表中至少使用两次随机生成的nr
- 检查某个键是否按下两次
- 一次点击,两次'单击'事件已启动
- onKeyUp 导致代码执行两次
- Javascript onkeyup有时会被激发两次