You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现HTML textarea按下回车键提交表单的功能

实现textarea回车提交表单的方案

针对你的AngularJS场景,只需要给textarea新增键盘事件监听即可,同时可以保留Shift+回车换行的常用交互,具体实现如下:

方案1:直接在模板内写判断逻辑(简单场景适用)

直接修改你的textarea标签,新增ng-keydown属性即可:

<div ng-app="myApp" ng-controller="myCtrl">
    <form ng-submit="sendMessage(newMessageContent)">
        First Name: <input type="text" ng-model="firstName"><br>
        Last Name: <input type="text" ng-model="lastName"><br>
        <br>
        Full Name: {{firstName + " " + lastName}}
        <textarea 
            id="typeMessageBox" 
            placeholder="Write here and hit enter to send..." 
            class="form-control-lg form-control" 
            ng-model="newMessageContent"
            ng-keydown="$event.keyCode === 13 && !$event.shiftKey && (sendMessage(newMessageContent), $event.preventDefault())"
        ></textarea>
    </form>
</div>

方案2:把逻辑封装到控制器(更易维护)

如果后续逻辑需要扩展,建议把键盘判断逻辑放到控制器中:

  1. 修改textarea绑定控制器方法
<textarea 
    id="typeMessageBox" 
    placeholder="Write here and hit enter to send..." 
    class="form-control-lg form-control" 
    ng-model="newMessageContent"
    ng-keydown="handleKeydown($event)"
></textarea>
  1. 控制器新增对应方法
angular.module('myApp', [])
.controller('myCtrl', function($scope) {
    // 原有提交逻辑
    $scope.sendMessage = function(content) {
        // 这里写你的表单提交逻辑
        console.log('提交内容:', content);
        // 提交完成后可清空输入框
        $scope.newMessageContent = '';
    };

    // 新增键盘事件处理
    $scope.handleKeydown = function($event) {
        // 按下回车键且没有按下Shift键时触发提交
        if ($event.keyCode === 13 && !$event.shiftKey) {
            // 阻止默认的换行行为
            $event.preventDefault();
            $scope.sendMessage($scope.newMessageContent);
        }
    }
});

说明

  • 如果你不需要换行功能,直接删掉代码中的!$event.shiftKey判断即可,所有按下回车的操作都会直接提交表单
  • 原有ng-submit的逻辑不需要修改,和现有提交逻辑完全兼容

内容的提问来源于stack exchange,提问作者Amara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:15:04