【发布时间】:2017-09-29 22:39:28
【问题描述】:
我有一个输入字段,该字段使用 ng-model 预填充了来自对象的 json 属性的值,如果此输入为空 最初 或如果它的值无效。
这是可行的,但是当页面加载时输入框中已经有数据作为值,输入被视为 $pristine,因为它没有被触及,即使有一个有效的值。因此,由于值有效而应该启用的按钮仍然处于禁用状态。
我可以将 $pristine 条件更改为 (personalDetailsForm.niNumber.$pristine && personalDetailsForm.niNumber.$invalid),当输入中有预填充值时,它会正确启用加载按钮,但如果预-填充的值被删除,输入不被视为无效。
有没有办法解决这个问题?
HTML:
<div input-field class="input-field col-xs-12 col-sm-6 col-md-2">
<input id="niNumberInput" name="niNumber" type="text" class="validate" pattern=".{9}" placeholder="{{niNumber}}" data-ng-model="niNumber">
<label for="niNumberInput" data-error="National Insurance number must be 9 characters long">National Insurance Number</label>
</div>
<div input-field class="input-field col-xs-12 col-sm-6 col-md-1">
<button data-ng-click="verifyNINumber()" data-ng-disabled="personalDetailsForm.niNumber.$invalid || personalDetailsForm.niNumber.$pristine" class="btn button waves-effect"><span class="fa fa-search"></span>Verify</button>
</div>
【问题讨论】:
-
我很讨厌 && 和 ||评估......但也许使用 && 代替 ||?
-
你不必检查它是否是
$pristine,只需删除那种检查。if form is $valid THEN send it. -
@Nick 你能解释一下
pattern=".{9}"这个模式的作用吗,我不擅长正则表达式! -
与表单提交无关,它是关于在提交表单之前尝试动态启用或禁用按钮。 “验证”按钮不是表单的提交按钮
-
@Naren Murali - 只有当输入的长度正好是 9 个字符时才使输入有效
标签: javascript angularjs