形式 – AngularJS – 如何触发以嵌套形式提交

我正在建立一个在提交时生成邀请的表单。邀请有几个字段,其中一个是一个带有“添加”按钮的电子邮件地址输入,当点击时,应将该地址添加到应收到邀请的电子邮件地址列表中。

这可以通过单个表单完成,但是如果用户在输入电子邮件时遇到回车键,则会在整个表单上触发提交。我想输入密钥结果 – 当电子邮件输入字段集中时 – 具有与点击“添加”按钮相同的效果。我预计解决这个问题的正确方法是将邀请表格中的电子邮件表单嵌套,如下所示:

<ng-form ng-submit="sendInvite()">
        <input type="text" placeholder="Title" ng-model="invitation.title"/>

        <ng-form ng-submit="addInvitee()">
            <input type="email" placeholder="Title" ng-model="inviteeEmail"/>
            <button class="btn" type="submit">add</button>
        </ng-form>

        <button class="btn" type="submit">Send</button>
    </ng-form>

在控制器中使用以下JavaScript:

$scope.addInvitee = function() {
        $scope.invitation.emails.push($scope.inviteeEmail);
        $scope.inviteeEmail = '';
    }

    $scope.sendInvite = function() {
        //code to send out the invitation
    }

我的问题是嵌套了表单(并将其从< form>转换为< ng-form&gt ;,从而将其转换为< ng-form>,提交任何一个不再有效。

Plunker here

我有类似的要求 – 向导驱动的多步骤形式。当用户单击“下一步”按钮时,我必须验证当前步骤窗体。

我们可以通过在绑定到表单的范围上触发“$ validate”事件来触发验证。

isFormValid = function($scope,ngForm) {
    $scope.$broadcast('$validate');
    if(! ngForm.$invalid) {
      return true;
    }
}

什么时候我想检查表单值是否正确,我将调用isFormValid的范围&表单实例。

工作代码Plunker link

在isFormValid(包括在上面的Plunker中)中添加一些额外的逻辑也是有用的,它使得&表单字段$ dirty,因为我们将显示/隐藏基于$ dirty状态的验证消息。

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...