2013-08-21 6 views
0

По какой-то причине мой onkeyup, похоже, дважды запускается для некоторых людей в IE9.Javascript onkeyup уволили дважды иногда

Моя текущая функция выглядит следующим образом:

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 секунду? Как функция предотвращения спама. Думаю, это решило бы проблему?

Любые идеи?

ответ

2

Возможно ли, что люди нажимают клавишу ввода дважды довольно быстро?

Каждый раз, когда мне нужно выполнить операцию async, я отказываюсь от ввода.

Сразу после вашего кодового ключа == 13 проверьте сначала, чтобы проверить, отключены ли файлы, если он отключен, игнорировать дальнейшую обработку. Во-вторых, отключите текстовое поле. В-третьих, удалите отключенный атрибут при успехе J50Npi.getJSON();

textarea.setAttribute("disabled","disabled"); 
textarea.removeAttribute("disabled"); 

http://jsfiddle.net/Tnwje/1/

+0

Cant возможно, что они давят дважды быстро, на весь разговор в чате человек, использующий IE9 всегда было ровно два одинаковых сообщения, а не один – Alosyius

Смежные вопросы