【问题标题】:Check validity of input on blur (Angular)检查模糊输入的有效性(Angular)
【发布时间】:2014-07-11 13:50:51
【问题描述】:

通过指令,我在模糊的输入字段中添加前导零,这使该字段有效。我遇到的问题是该字段仍然无效。

这样的事情可能会奏效

AngularJS: How do I manually set input to $valid in controller?

但我认为还必须检查表单。

有什么简单的方法可以让它工作吗?

编辑:

这是指令

.directive('leadingZero', function() {
    return {
        restrict: 'A',
        link : function (scope, elem, attr) {
            elem.bind('blur', function() {
                var leadingZero = parseInt(attr["leadingZero"], 10);
                var len = parseInt(elem[0].value.length, 10);

                if(len < leadingZero) {
                    while(parseInt(elem[0].value.length, 10) < leadingZero) {
                        elem[0].value = '0'+elem[0].value;
                    };
                };
            });
        }
    }
})

你会这样使用它:

<input name="month" leading-zero="2" type="text" />

这会将“5”变为“05”

【问题讨论】:

  • 你能发布你的指令和html吗?
  • 没有任何代码,我们无能为力。你在应用范围吗?

标签: javascript angularjs validation


【解决方案1】:

您必须了解原始和脏,如果您的字段没有任何变化,则 $pristine 为真,$dirty 为假,如果发生变化,$dirty 为真,$pristine 为假。更改类的代码示例ng-class="{ 'has-error': form.name.$invalid &amp;&amp; !form.name.$pristine }"

【讨论】:

    【解决方案2】:

    与添加前导零的指令一起,使用input[number] 以方便验证:

    <input name="month" 
           leading-zero="2"
           type="number"
           min="1" 
           max="12"  
           ng-model="month" />
    

    DEMO FIDDLE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 2020-12-25
      • 2015-01-29
      • 2012-07-26
      相关资源
      最近更新 更多