【问题标题】:AngularJS validation input different than zeroAngularJS验证输入不同于零
【发布时间】:2015-08-16 16:50:18
【问题描述】:

开始我在编程特别是 Angular 方面真的很新。我想验证输入不允许数字 0 。这是我的代码:

<form ng-app="linearEquation" ng-controller="calcCtrl" 
              name="calculator" ng-init="notValid=true" novalidate>
        <div>
            <h3 class="field">Kalkulator oblicza wartość równania 
                <var>ax = b</var>.</h3>
            <div class="field">
                <p>
                    Podaj wartość a:<br/>
                    <input type="number" name="fieldA" ng-model="a" required integer />
                    <span class="error" ng-show="calculator.fieldA.$invalid"/>
                    <span  ng-show="calculator.fieldA.$error.number">
                    Proszę podać liczbę</span><br/>
                </p>
                <p>
                    Podaj wartość b:<br/>
                    <input type="number" name="fieldB" ng-model="b" required integer />
                    <span class="error" ng-show="calculator.fieldB.$invalid"/>
                    <span  ng-show="calculator.fieldB.$error.number">
                    Proszę podać liczbę</span>
                </p>
                <p>
                    <button type="submit"   
                                ng-disabled="
                                    calculator.fieldA.$dirty &&
                                    calculator.fieldA.$invalid ||
                                    calculator.fieldB.$dirty &&  
                                    calculator.fieldB.$invalid" 
                                 ng-click="count()">
                        Oblicz
                    </button>
                </p>
            </div>
            <p class="field" id="result">x = {{c.toFixed(2)}}</p>
        </div>

我应该如何验证它。此外,该按钮似乎没有在页面加载时被禁用。如何管理?

【问题讨论】:

  • 它没有被禁用,因为它只有在至少一个字段脏且无效时才能被禁用。条件应该是ng-disabled="calculator.$invalid"

标签: html angularjs validation input


【解决方案1】:

如果您希望按钮在启动时禁用,您应该删除这两个 $dirty。你最好使用ng-pattern 指令来验证数字1-9 并省略“0”。你的input 应该是这样的:

<input type="number" name="fieldA" ng-model="a" required ng-pattern="/[1-9]/" />

【讨论】:

    【解决方案2】:

    我在这里了解两种情况 首先,在字段 0 中根本不应该被允许,例如 0 无效,10 也无效 550 也无效 在这种情况下使用

    <input type="number" name="fieldA" ng-model="a" required ng-pattern="/[1-9]*/" />
    

    第二种情况,零可能是数字的一部分,但不应允许值 0,例如 0 无效但 01 有效,501 有效且在这种情况下 0000 无效

    <input type="number" name="fieldA" ng-model="a" required ng-pattern="/([1-9][0-9]*||[0]*[1-9]+[0-9]*)/" /> 
    

    根据正则表达式,如果它以 1-9 开头,则后面可以有任何数字,如果以 0 开头,则后面应该至少有一个非零值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 2017-01-03
      • 2010-11-13
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多