AngularJs使用指令中的输入字段来验证表单

库尔达里姆

我正在开发一个项目,该项目具有类似的提交表单,因此我决定将一些字段移至指令。

表格范例:

 <div loading class="col-sm-12" ng-controller="Controller">
        <form name="myForm" role="form" novalidate>
            <fieldset class="lines-header-border">
                <div class="col-sm-6">
                   <div class="form-group">
                       <label class="col-sm-4 control-label">Date</label>
                       <div class="col-sm-7">
                            <date-field 
                             model="myModel" 
                             date-picker-options="datePickerOptions"
                             for-name="date"
                             for-ng-class="myForm.date.$invalid"
                             is-required="true"/>

                       </div>
                     <div class="col-sm-4">
                    <input class="form-control" 
                           name="amount" 
                           ng-model="amount" 
                           ng-class="{ 'has-error' : myForm.amount.$invalid }" 
                           required/>
                </div>
                    </div>
            </fieldset>
        </form>
    </div>

日期字段指令:

.directive('dateField', function() {
    return {
        restrict: 'E',
        replace: true,
        scope: {
            model: '=',

            datePickerOptions: '=',

            isRequired: '@',

            forName:'@',

            forNgClass: '&'
        },
        template: '<input ui-date="datePickerOptions" type="date" name="{{forName}}" class="form-control"  ng-model="model" ng-class="{ \'has-error\' : forNgClass()}"  ng-required="isRequired"/>'
    };
});

提交时的验证问题:其他字段在单击表单提交按钮时得到验证,但此日期字段未通过验证。我认为问题出在哪里for-ng-class="myForm.date.$invalid"

有什么建议?

Chickenrice

在您的情况下,您想通过指令属性“ for-ng-class”访问控制器作用域变量“ myForm.date。$ invalid”。将“ @”分配给指令范围变量“ forNgClass”以进行双向数据绑定。输入字段更改后,该类将相应更新。

scope:{
    .....
    forNgClass: "@"
    .....
}

我实现了一个简单的示例:

更新:由于angular无法动态生成输入元素的名称属性。我们需要以内部形式包装dateField的输入元素(通过使用ngForm指令)。您可以参考Angular Doc以获得有关angular世界中嵌套表格的更多详细信息。

<!DOCTYPE html>
<html>

<head>
    <style>
        .has-error{
            background:#ccc;
            border: 1px solid red;
        }
    </style>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.11/angular.min.js"></script>
    <script src="angular-ui-date.js"></script>
</head>

<body ng-app="MyApp">
    <div ng-controller="MyCtrl">
        <form name="myForm" novalidate>
            <h2>Selected date: {{dateData}}</h2>
            <date-field model="dateData" is-required="true"></date-field>
            <date-field model="dateData2" is-required="true"></date-field>
            <h3>myForm is invalid?</h3>{{myForm.$invalid}}
        </form>
    </div>
    <script>
        angular.module("MyApp",['ui.date'])
        .controller("MyCtrl",function($scope){

        })
        .directive("dateField",function(){
            return {
                restrict: "E",
                replace: "true",
                template: '<ng-form name="subForm"><input ui-date ui-date-format="yy-mm-dd" type="date" ng-class="{\'has-error\':subForm.myDate.$invalid}" name="myDate" ng-model="model" ng-required="isRequired"/></ng-form>',
                scope:{
                    model: "=",
                    isRequired: "@"
                }
            };
        });
    </script>
</body>

</html>

这是一个在线演示您可以参考它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用包含RegEx和Jquery的输入字段来验证表单

来自分类Dev

AngularJS:表单验证和输入指令

来自分类Dev

为什么需要用ng-model指令绑定html输入字段来验证表单

来自分类Dev

Google Places指令中的AngularJS表单验证

来自分类Dev

AngularJS-指令的templateUrl中的表单验证

来自分类Dev

Angular.js:对指令生成的输入字段进行表单验证

来自分类Dev

Angular.js:对指令生成的输入字段进行表单验证

来自分类Dev

使用不带指令的JavaScript函数进行Angularjs表单/字段验证

来自分类Dev

使用AngularJs中的所有字段验证表单

来自分类Dev

angularjs其他表单验证规则(非输入字段验证)

来自分类Dev

使用指令从表单中的几个输入字段中删除$ error消息

来自分类Dev

如何使用CasperJS填写表单标签来填写AngularJS输入字段

来自分类Dev

如何使用jquery验证插件来验证输入字段中带有点的名称?

来自分类Dev

Angular指令中的表单字段验证无法正常工作

来自分类Dev

没有名称的Angularjs表单验证输入字段

来自分类Dev

没有名称的Angularjs表单验证输入字段

来自分类Dev

在使用jQuery输入时验证表单输入字段吗?

来自分类Dev

输入字段组合的表单验证

来自分类Dev

如何结合Laravel Blade指令来检查表单输入字段

来自分类Dev

使用AngularJS中动态构建的表中的输入来验证行

来自分类Dev

使用新值更新验证后,如何重置表单中的输入字段失败

来自分类Dev

使用新值更新验证后,如何重置表单中的输入字段失败

来自分类Dev

如何使用输入追加来验证表单字段

来自分类Dev

无法使用 PHP 和 JavaScript 验证表单输入字段

来自分类Dev

名称字段中包含。(点)时如何使用angularjs验证表单?

来自分类Dev

名称字段中包含。(点)时如何使用angularjs验证表单?

来自分类Dev

在表单中验证“输入类型文件”和“下拉选项”(使用angularjs)可能吗?

来自分类Dev

如何使用HTML5输入验证来验证表单输入

来自分类Dev

使用javascript验证字段中的密钥输入

Related 相关文章

  1. 1

    使用包含RegEx和Jquery的输入字段来验证表单

  2. 2

    AngularJS:表单验证和输入指令

  3. 3

    为什么需要用ng-model指令绑定html输入字段来验证表单

  4. 4

    Google Places指令中的AngularJS表单验证

  5. 5

    AngularJS-指令的templateUrl中的表单验证

  6. 6

    Angular.js:对指令生成的输入字段进行表单验证

  7. 7

    Angular.js:对指令生成的输入字段进行表单验证

  8. 8

    使用不带指令的JavaScript函数进行Angularjs表单/字段验证

  9. 9

    使用AngularJs中的所有字段验证表单

  10. 10

    angularjs其他表单验证规则(非输入字段验证)

  11. 11

    使用指令从表单中的几个输入字段中删除$ error消息

  12. 12

    如何使用CasperJS填写表单标签来填写AngularJS输入字段

  13. 13

    如何使用jquery验证插件来验证输入字段中带有点的名称?

  14. 14

    Angular指令中的表单字段验证无法正常工作

  15. 15

    没有名称的Angularjs表单验证输入字段

  16. 16

    没有名称的Angularjs表单验证输入字段

  17. 17

    在使用jQuery输入时验证表单输入字段吗?

  18. 18

    输入字段组合的表单验证

  19. 19

    如何结合Laravel Blade指令来检查表单输入字段

  20. 20

    使用AngularJS中动态构建的表中的输入来验证行

  21. 21

    使用新值更新验证后,如何重置表单中的输入字段失败

  22. 22

    使用新值更新验证后,如何重置表单中的输入字段失败

  23. 23

    如何使用输入追加来验证表单字段

  24. 24

    无法使用 PHP 和 JavaScript 验证表单输入字段

  25. 25

    名称字段中包含。(点)时如何使用angularjs验证表单?

  26. 26

    名称字段中包含。(点)时如何使用angularjs验证表单?

  27. 27

    在表单中验证“输入类型文件”和“下拉选项”(使用angularjs)可能吗?

  28. 28

    如何使用HTML5输入验证来验证表单输入

  29. 29

    使用javascript验证字段中的密钥输入

热门标签

归档