AngularJS ng-disabled - 输入$ pristine时不起作用,但是如果形成$ pristine则起作用

时间:2017-09-01 15:24:09

标签: javascript jquery angularjs

如果表单中特定输入的值为空,我尝试禁用materializecss按钮,但是如果表单是$ pristine而不是输入,我只能使用ng-disable成功禁用它。

这有效:

data-ng-disabled="mainDetailsForm.$pristine"

但这并不是:

data-ng-disabled="mainDetailsForm.niNumberInput.$pristine"

并且没有:

data-ng-disabled="niNumberInput.$pristine"

-

JSFiddle:https://jsfiddle.net/6qswosh8/

-

完整HTML:

<form id="mainDetailsForm" name="mainDetailsForm">

<div class="row">

    <div input-field class="input-field col-xs-12 col-md-4">

        <input id="niNumberInput" name="niNumberInput" type="text" class="validate" pattern=".{9}" placeholder="National Insurance Number">

        <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-md-1">

        <button data-ng-disabled="mainDetailsForm.niNumberInput.$pristine" class="btn button waves-effect"><span class="fa fa-search"></span>Verify</button>

    </div>

</div>

</form>

1 个答案:

答案 0 :(得分:0)

要通过表单访问各个输入的属性,您需要为输入提供ng-model。 ng-model属性是绑定它的东西。我更新了你的jsfiddle https://jsfiddle.net/dougefresh/6qswosh8/1/(我还必须在小提琴中正确地工作)。

             ID Treatment
0   --20AxECvv-     B-C-A
1  --h9INKewQf-       B-A
2    QUeSNEXmdB       A-C
3    qu72Ql@h79         C
4     zZU7a@8jN         C

文档中的这一小行很重要&#34;为了允许表单和控件的样式,ngModel添加了这些CSS类:&#34;它列出了$ dirty,$ pristine等。文档明确说明他们必须使用ng-model。 https://docs.angularjs.org/guide/forms