我一直在使用jQuery来获取enter事件。如下所示,当我们在文本区域中按Enter键时,我们得到了警报,但随后输入了文本。我已经尽力了,但找不到我能做的。有人可以帮我吗?
var jchat = jQuery.noConflict();
jchat("#msg-txt").keypress(function(e){
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == '13'){
e.stopPropagation();
if(event.shiftKey){
if (jchat('#msg-txt').attr('rows') == '1')
jchat('#msg-txt').attr('rows', '2');
} else {
messageText = jchat('#msg-txt').val();
alert(messageText)
}
}
})
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<textarea id="msg-txt" rows="4" cols="50">
lalalalalaalalala teste lalala
</textarea>
</body>
</html>
答案 0 :(得分:3)
使用e.preventDefault();
代替e.stopPropagation();
答案 1 :(得分:2)
您需要更改
e.stopPropagation();
使用
e.preventDefault();
详细信息在这里。
https://developer.mozilla.org/tr/docs/Web/API/Event/preventDefault
答案 2 :(得分:0)
尝试将jchat("#msg-txt").keypress(function(e){
替换为
jchat("#msg-txt").keyup(function(e){
答案 3 :(得分:0)
但是我的猜测是,您应该改为使用keydown
事件。另外,您的下一条语句无法访问
if(event.shiftKey){
if (jchat('#msg-txt').attr('rows') == '1')
jchat('#msg-txt').attr('rows', '2');
}
顺便说一句,这里是一个带有keydown
事件的示例:
var jchat = jQuery.noConflict();
jchat("#msg-txt").on('keydown', function(e){
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == '13'){
e. preventDefault();
if(event.shiftKey){
if (jchat('#msg-txt').attr('rows') == '1')
jchat('#msg-txt').attr('rows', '2');
} else {
messageText = jchat('#msg-txt').val();
alert(messageText)
}
}
})