2013-03-03 4 views
5

jQuery를 사용하지 않고 enter 키를 누르면 onKeyUp을 캡처하려고합니다.jQuery없이 onKeyUp을 사용 하시겠습니까?

내 현재 코드는 다음과 같습니다

$('#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 = ''; 
     } 
    }); 

방법이 대신 일반 자바 스크립트에서 할 수 있을까?

+0

'onkeyup'은'Javascript' 이벤트입니다. –

+1

document.getElementById ("chatboxtextarea") 만 가지고있는 jquery를 변경하십시오. onkeyup = function() {} – mplungjan

+0

어떻게 코드가 보입니까? – Alosyius

답변

3

간단히 :

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 = ''; 
    } 
}; 

편집 :

이 또는 당신이 좋아하는 뭔가를 호출 할 수있는 이벤트를 추가하기 위해 다음; 요소 객체 ('에'없음) 이벤트 유형, 함수 호출 및 캡처를 사용할지 여부를 전달하는 것은, 단지 다른 브라우저 방법을 사용합니다 :

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; 
    } 
}; 

예 :

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

IE 7을 제외한 모든 브라우저에서 작동, 어떤 아이디어? IE7은 e가 null이거나 객체가 아니라고 말합니다. – Alosyius

+0

@Alosyius는 ie7 등을 위해 window.event가 필요합니다 –

+0

나는 다음을 확신하지 못합니다 :/모든 브라우저에서 위의 작업을 수행 할 수있는 방법이 있습니까? – Alosyius

0

jQuery를 내부적으로 복잡한 코드를 많이 사용하기 때문에 간단히 모방하기가 어렵습니다. 문제의 ID에 동일한 이벤트를 바인딩하면됩니다. 그렇게 나쁘지는 않습니다. 요소를 선택

:

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

이벤트를 부착의 경우 :

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

IE8-를 들어, .attachEvent를 사용해야하지만, 정확한 아날로그 아니다. 고대 브라우저의 경우 .onkeyup 속성을 사용하십시오.

관련 문제