2013-03-03 17 views
5

jQuery kullanılmadan enter tuşuna basıldığında onKeyUp'ı yakalamaya çalışıyorum.onKeyUp, jQuery olmadan mı?

Benim şu anki kodudur:

$('#chatboxtextarea').on('keyup', function (e) { 
     var msg = document.getElementById('chatboxtextarea').value; 
     if (msg.replace(/\r/g, '\\\\r').replace(/\n/g, '') != "" && e.keyCode == 13) { 
      var textarea = document.getElementById('chatboxtextarea'); 
      textarea.value = ''; 

      .....code to send..... 


     } else if (msg.replace(/\r/g, '\\\\r').replace(/\n/g, '') == '') { 
      var textarea = document.getElementById('chatboxtextarea'); 
      textarea.value = ''; 
     } 
    }); 

Bu nasıl yerine normal JavaScript yapılabilir?

+0

'onkeyup' bir' Javascript' olayıdır –

+1

document.getElementById ("chatboxtextarea") için gereken tek jahı değiştirin onkeyup = function() {} – mplungjan

+0

Bu kod nasıl görünüyor? – Alosyius

cevap

3

Basitçe:

document.getElementById('chatboxtextarea').onkeyup = function (e) { 
    e = e || window.event; 
    var textarea = this; 
    var msg = textarea.value; 
    if (msg.replace(/\r/g, '\\\\r').replace(/\n/g, '') != "" && e.keyCode == 13) { 
     textarea.value = ''; 

     .....code to send..... 

    } else if (msg.replace(/\r/g, '\\\\r').replace(/\n/g, '') == '') { 
     textarea.value = ''; 
    } 
}; 

düzenleme:

Alternatif gibi bir şey diyebiliriz olay eklemek için aşağıdaki; eleman nesnesini ('açık' olmadan) olay türünü, işlev çağırmak ve yakalama kullanılıp kullanılmayacağını geçen sadece farklı tarayıcı yöntemlerini kullanmak için:

function addEvent(elm, evType, fn, useCapture) { 
    if (elm.addEventListener) { 
    elm.addEventListener(evType, fn, useCapture); 
    } 
    else if (elm.attachEvent) { 
    elm.attachEvent('on' + evType, fn); 
    } 
    else { 
    elm['on' + evType] = fn; 
    } 
}; 

yani:

addEvent(document.getElementById('chatboxtextarea'), 'keyup', 
    function(e) { 
    e = e || window.event; 
    ... 
    }, false); 
+0

Works kodlarını yazmak için biraz iş var, herhangi bir fikir? IE7, e'nin boş ya da bir nesne olmadığını söylüyor. – Alosyius

+0

@Alosyius, ie7 vb. Için window.event'e ihtiyaç duyar. –

+0

Aşağıdakileri takip ettiğimden emin değilim:/Yukarıdaki çalışmaların tüm tarayıcılarda yapılmasının bir yolu var mı? – Alosyius

0

jQuery basitçe taklit etmek zor olacak karmaşık bir çok kod içeriyor. Tek isteğiniz aynı olayı söz konusu kimliğe bağlamaksa, o kadar da kötü değil. eleman seçme için

:

document.getElementById('chatboxtextarea') 
document.querySelector('#chatboxtextarea') 
document.querySelectorAll('#chatboxtextarea')[0] 

olayı takmak için:

.addEventListener('keyup', function (e) { 

IE8- için, .attachEvent kullanmalıdır ancak kesin bir analog değil. Eski tarayıcılarda .onkeyup özniteliğini kullanın.

İlgili konular