Angular JS HTML5 验证

Posted

技术标签:

【中文标题】Angular JS HTML5 验证【英文标题】:Angular JS HTML5 Validation 【发布时间】:2013-03-05 12:40:08 【问题描述】:

我有一个表单,我在输入中使用了required tag - 这工作正常,但在我的提交按钮上我有ng-click="visible = false",它在提交数据时隐藏表单。

如果所有验证都正确,我怎样才能让它只设置为 false?

App.js

 $scope.newBirthday = function()

        $scope.bdays.push(name:$scope.bdayname, date:$scope.bdaydate);

        $scope.bdayname = '';
        $scope.bdaydate = '';

    ;

html

 <form name="birthdayAdd" ng-show="visible" ng-submit="newBirthday()">
        <label>Name:</label>
        <input type="text" ng-model="bdayname" required/>
        <label>Date:</label>
        <input type="date" ng-model="bdaydate" required/>
        <br/>
        <button class="btn" ng-click="visible = false" type="submit">Save</button>
      </form>

【问题讨论】:

【参考方案1】:

如果您为表单命名,FormController 将通过其名称在最近的控制器范围内公开。所以在你的情况下说你有一个类似的结构

<div ng-controller="MyController">
    <!-- more stuff here perhaps -->
    <form name="birthdayAdd" ng-show="visible" ng-submit="newBirthday()">
        <label>Name:</label>
        <input type="text" ng-model="bdayname" required/>
        <label>Date:</label>
        <input type="date" ng-model="bdaydate" required/>
        <br/>
        <button class="btn" ng-click="onSave()" type="submit">Save</button>
      </form>
</div>

现在在你的控制器中

function MyController($scope)
    // the form controller is now accessible as $scope.birthdayAdd

    $scope.onSave = function()
        if($scope.birthdayAdd.$valid)
            $scope.visible = false;
        
    

如果表单中的输入元素是有效的,那么表单就是有效的。希望这可以帮助。

【讨论】:

以上是关于Angular JS HTML5 验证的主要内容,如果未能解决你的问题,请参考以下文章

前端小白之每天学习记录----angula2--

angular js入门总结,bootstrap引入不成功等问题

Angular 2 单元测试 - 出现错误无法加载“ng:///DynamicTestModule/module.ngfactory.js”

长数组列表渲染使 Angular.js 中的页面滚动变慢

angular.js html5mode页面刷新问题[重复]

在 Angular.js 上的 HTML5 Canvas 中的背景图像上绘制一个矩形