2013-03-03 5 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 = ''; 
     } 
    }); 

これは代わりに、通常のJavaScriptで行うことができる方法は?

+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属性を使用します。

関連する問題