我想在不使用jQuery的情况下按下enter时捕获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,'') == '') { var textarea = document.getElementById('chatBoxtextarea'); textarea.value = ''; } });
如何在常规JavaScript中完成?
解决方法
只是:
document.getElementById('chatBoxtextarea').onkeyup = function (e) { e = e || window.event; var textarea = this; var msg = textarea.value; if (msg.replace(/\r/g,'') != "" && e.keyCode == 13) { textarea.value = ''; .....code to send..... } else if (msg.replace(/\r/g,'') == '') { textarea.value = ''; } };
编辑:
或者,您可以调用以下内容来添加事件;传递元素对象,事件类型(没有’on’),要调用的函数以及是否使用捕获,只是为了利用不同的浏览器方法:
function addEvent(elm,evType,fn,useCapture) { if (elm.addEventListener) { elm.addEventListener(evType,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);