在textarea jquery中单击输入时发送表单

Posted

技术标签:

【中文标题】在textarea jquery中单击输入时发送表单【英文标题】:Send form when enter is clicked inside textarea jquery 【发布时间】:2021-09-26 03:38:27 【问题描述】:

我有这个 jquery

$(document).ready(function () 
         $("#submitmsg").click(function () 
           var clientmsg = $("#usermsg").val();
           $.post("post.php",  text: clientmsg );
           $("#usermsg").val("");
           return false;
         );
       );

这是我的html

<form name="message" action="" id="message">
 <textarea  name="usermsg" id="usermsg"></textarea>
 <div class="submit"><input name="submitmsg" type="submit" id="submitmsg" value="Send"></div>
</form>

此时只能通过按下按钮发送表单。但是,我想通过单击文本区域内的输入来发送它。但我还需要能够通过按 shift + enter 来换行。

我如何在 jquery 中做到这一点?我试过了:

     $("#usermsg").keypress(function (e) 
      if (e.which == 13) 
       var clientmsg = $("#usermsg").val();
        $.post("post.php",  text: clientmsg );
        $("#usermsg").val("");
        return false;
      
    );

但我不能让它在换档时断线。

谢谢。

【问题讨论】:

【参考方案1】:

检查事件对象的shiftKey属性

$("#usermsg").keypress(function(e) 
  if (e.which == 13)   
    console.log(e.shiftKey ? 'Shift & Enter' : 'Enter only')
    if (!e.shiftKey) 
      // do ajax here
      return false
    
  
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form name="message" action="" id="message">
 <textarea  name="usermsg" id="usermsg"></textarea>
 <div class="submit"><input name="submitmsg" type="submit" id="submitmsg" value="Send"></div>
</form>

【讨论】:

太好了,谢谢。顺便说一句,有没有办法将两个功能合并为一个?那么表单是通过按下按钮和回车来发送的? 不要在按钮上使用点击事件,而是在表单上使用提交事件,然后在按键中执行$('#message').submit()

以上是关于在textarea jquery中单击输入时发送表单的主要内容,如果未能解决你的问题,请参考以下文章

textarea jQuery上的默认文本?

使用 JS 或 Jquery 检测 textarea 中的 url

发送消息后保持 textarea 处于活动状态

jQuery 动态关注第一个 INPUT 或 Textarea

如何通过使用 jQuery 拖动其右下角来调整文本输入框的大小(如 textarea)?

jQuery textarea - 插入模式光标位置