AngularJS conditional ng-disabled does not re-enable

前端 未结 3 2050
死守一世寂寞
死守一世寂寞 2021-02-06 21:47

Given a conditionally disabled text input field using ng-disabled=\"truthy_scope_variable\", AngularJS disables the field the first time the scope variable

相关标签:
3条回答
  • 2021-02-06 22:30

    There is an alternative solution available just use

    ng-value

     <input type="radio" ng-model="new_account" name="register"
     id="radio_new_account" ng-value="true" />
    
    <input type="radio" ng-model="new_account" name="register"
     id="radio_existing_account" ng-value="false" />
          <input type="password" ng-disabled="new_account" id="login-password"
     name="password" ng-model="password" />
    
    0 讨论(0)
  • 2021-02-06 22:36

    As of 2016 March the binded values will update the ui in Chrome and Firefox even when the ng-disabled is true but not in Safari. In Safari when you use ng-disabled the ui wont update although the input element value property will have the updated value (Check element.value after changing it.)

    In Safari to force the ui updates with ng-model or ng-value directives you have to use ng-readonly instead of ng-disabled.

    0 讨论(0)
  • 2021-02-06 22:38

    That's because HTML attributes are always strings, so in your example ngDisabled is evaluating a string in both cases ("true" or "false").

    To remedy, you should compare the model against the string value in ngDisabled:

    ng-disabled="new_account == 'false'"
    

    ... or use a checkbox, to get the actual boolean value:

    <input type="checkbox" ng-model="existing_account" name="register" id="checkbox_new_account" />
    <label for="checkbox_new_account">Is Existing Account</label>
    
    Password:
    <input type="password" ng-disabled="existing_account" name="password" ng-model="password" />
    

    Here's a PLNKR with both solutions.

    0 讨论(0)
提交回复
热议问题