ng-show =“false”并输入type =“number”和min验证

时间:2015-08-03 19:24:14

标签: javascript angularjs validation

在我的cshtml页面中,我使用输入类型=“数字”进行最小验证。我也有条件地显示这个控制。我只想验证在控件可见时显示ng-show =“true”但在两种情况下都会触发(对于ng-show =“false”)。以下是示例:Modified sample Plunker

我的控制如下:

<input type="number" name="maxSale" ng-show="!selections.createDaily"
                           id="maxSale"
                           ng-model="currentmax4sale.maxSale"
                           class="form-control"
                           min="1"
                           required
                           data-sm:number
                           data-sm:number-format data-sm:focus
                           data-accuracy="0" />
                    <div class="field-validation-error">

                        <span ng-show="form.editMax4saleGeneralForm.maxSale.$error.required && form.editMax4saleGeneralForm.maxSale.$dirty">@String.Format(Messages.isRequired, Labels.limit)</span>

                        <span ng-show="(form.editMax4saleGeneralForm.maxSale.$error.min ) && form.editMax4saleGeneralForm.maxSale.$dirty">
                            @String.Format(Messages.mustBeGreaterThanOrEqualTo, Labels.limit, "1")
                        </span>
                    </div>

当我的控件可见时,我该怎么办才能进行条件验证?

2 个答案:

答案 0 :(得分:1)

你真的建议你使用ng-if,基本上标记仍然存在,但是ng-if它会将它从DOM中删除,因此它甚至不会被渲染,因此解决了你的问题。您也可以更改您正在测试的逻辑,但我认为您根本不想要标记中的项目。

答案 1 :(得分:0)

我使用{{}}条件值解决了问题,例如

http://plnkr.co/edit/cNahYe8QpNITkDBe3YE3?p=preview

&#13;
&#13;
min="{{selections.createDaily?'0': '1'}}"
&#13;
&#13;
&#13;