我想提交表单,只要我在文本区域按回车键,这是与输入类型文本工作良好,但我不知道如何与文本区域。我必须使用文本区域,因为我想要文本输入是可扩展的,我怎么能使它工作?由于
<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..." type="text submit" class="form-control-lg form-control" ng-model="newMessageContent"></textarea>
</form>
</div>
你可以使用ng-keypress然后检查keypress是否等于回车然后调用提交表单函数
在你的文本区域应该是
<textarea ng-keypress="getkeys($event)" ng-model="newMessageContent"></textarea>
那么角代码应当被
$scope.getkeys = function (event) {
if(event.keyCode == 13){
$scope.sendMessage( $scope.newMessageContent );
}
}
你可以使用下面的jQuery代码来提交你的表单,点击在你的文本区输入:
$("#typeMessageBox").keypress(function (e) {
if (e.which === 13 && !e.shiftKey) {
e.preventDefault();
$(this).closest("form").submit();
}
});
也就是说,这可能不是一个好主意。如果您想要一个可扩展的字段,那肯定是因为您将有几行文本,因此几乎肯定需要换行。
我强烈建议您添加一个帮助文本,说明您将在输入时提交表单,因为您的用户会对这种行为感到非常惊讶。
更好的做法是:不要试图改变原生行为。这样的文本区域正在为一个很好的理由,每个人都习惯了。改变它的行为对你来说似乎是个好主意,但你可能会失去你的用户。