javascript - Angular Controller 显示模态形式是有效的,当它不是

标签 javascript angularjs validation twitter-bootstrap-3

我有一个在模态指令(引导 UI)中弹出的表单。 我有 2 个带有 html5 验证的输入:“必需”。

我想在 Controller 中查明表单是否有效,然后转到服务器。在我遇到范围问题后(当我尝试引用 $scope.FormName.$valid 时),我通过使用 ng-click 发送表单名称找到了解决方案。

然后我看到 Controller 代码显示表单有效(即使必填字段为空)。 如何在提交前检查表单是否有效。

这是我的代码:

html 格式

 <form name="EmailForm"> 
    <div class="row">
        <div class="col-md-1 lbl_hdr">
            date:
        </div>
        <div class="col-md-1">
            {{Curr_Date  | date:'dd/MM/yyyy'}}
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <div class="row">
                <div class="col-md-1">
                </div>
            </div>
            <div class="row">
                <div class="col-md-1 lbl_hdr">
                    from:
                </div>
                <div class="col-md-1">
                    <input type="email" required placeholder="email" />
                    <br />
                    <br />
                </div>
            </div>

            <div class="row">
                <div class="col-md-3 lbl_hdr">
                    message:
                </div>
            </div>
            <div class="row">
                <div class="col-md-1">
                    <textarea class="msg_text" required rows="5"></textarea>
                </div>
            </div>
            <div class="row">
                <div class="col-md-9">
                    <button type="submit" ng-click="SendEmail(EmailForm)" class="btn btn-primary btn_padded_top">send</button>
                    <button type="button" class="btn btn-primary btn_padded_top pull-left" ng-click="$close();">cancel</button>
                </div>
            </div>

        </div>
    </div>
</form>

控制者

        $scope.openModal = function () {
        var modalInstance = $modal.open({
            templateUrl: '/js/app/templates/msg_modal.html',
            controller: function ($scope) {
                $scope.Curr_Date = new Date();

                $scope.SendEmail = function (EmailForm) {
                    if (EmailForm.$valid) {
                        EmailService.sendEmail("sdsd").success(
                            function (data) {
                            });
                    }//if valid
                };
            },
            size: size
        });
    };

“if (EmailForm.$valid)”= 始终为真

最佳答案

我遇到了同样的问题,事实证明表单元素必须具有 ng-model 才能启动 AngularJS 验证。

所以只需将它添加到所有元素中,它应该都很好,例如

<input type="email" required placeholder="email" ng-model="email" />

关于javascript - Angular Controller 显示模态形式是有效的,当它不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24106454/

相关文章:

javascript - 如何从 React 中的 Websocket 获取数据?

javascript - 显示页面不断变化的区域的 Angular 最佳实践

arrays - 使用给定的字典从一个字符串到达​​另一个字符串

javascript - 判断一个字符串是否只包含另一个字符的函数

javascript - .blur() vs .on() ,哪个更好用(目前)

javascript - 将 javascript 变量声明为特定类型

javascript - .innerHTML 将其存储到变量中时出现问题

javascript - 活跃用户时的 Angular ng-show

angularjs - Angular-Leaflet 热图数据更新

java - Java中如何统一有效性检查和异常抛出?