jQuery get enter事件,但之后不输入

时间:2018-11-26 13:35:09

标签: javascript jquery html

我一直在使用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>

4 个答案:

答案 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)
            }
        }

    })