AngularJS 输入文本被 select 选项禁用
AngularJS input text disabled by select option
我有一个带有 <select>
和 <input text>
的简单表格;如果选项的值为真,我需要的是禁用输入文本。这是我的代码:
<div class="form-group">
<label for="auth">{{ 'SETTINGS.SYSTEM.NET.WIFI.AUTH.LABEL' | translate }}</label>
<select name="auth" class="form-control" ng-model="wifi.securitytype">
<option value="true">{{ 'SETTINGS.SYSTEM.NET.WIFI.AUTH.NONE' | translate }}</option>
<option value="false">{{ 'SETTINGS.SYSTEM.NET.WIFI.AUTH.WEP' | translate }}</option>
<option value="false">{{ 'SETTINGS.SYSTEM.NET.WIFI.AUTH.WPA2' | translate }}</option>
</select>
</div>
<fieldset ng-disabled="wifi.securitytype">
<div class="form-group" ng-class="{'has-error':wifiForm.password.$invalid && !wifi.securitytype}">
<label for="password">{{ 'SETTINGS.SYSTEM.NET.WIFI.PASSWORD' | translate }}</label>
<input class="form-control" name="password" placeholder="{{ 'SETTINGS.SYSTEM.NET.WIFI.PASSWORD_PLACEHOLDER' | translate }}" ng-model="wifi.wpakey" ng-pattern='/^(?!\s*$).+/' ng-model-options="{ updateOn: 'blur' }">
<span class="help-block ng-hide" ng-show="wifiForm.password.$invalid && !wifi.securitytype">RICHIESTA PASSWORD DI RETE</span>
</div>
</fieldset>
问题是 <fieldset>
曾经被禁用。我的错在哪里?
我认为您希望选项值是布尔类型。但是 HTML 属性始终是字符串,因此您应该在 "true" 或 "false" 两种情况下评估它们,如 here
所指出的
尝试将 ng-disabled 条件替换为
<fieldset ng-disabled="'true' === wifi.securitytype">
wifi.securitytype
将 return 'true'
或 'false'
根据 javascript,它们是非空字符串并且是真实的,因此您的 ng-disabled
总是计算结果为 true
。你可以按照@Eirini的建议去做。
我有一个带有 <select>
和 <input text>
的简单表格;如果选项的值为真,我需要的是禁用输入文本。这是我的代码:
<div class="form-group">
<label for="auth">{{ 'SETTINGS.SYSTEM.NET.WIFI.AUTH.LABEL' | translate }}</label>
<select name="auth" class="form-control" ng-model="wifi.securitytype">
<option value="true">{{ 'SETTINGS.SYSTEM.NET.WIFI.AUTH.NONE' | translate }}</option>
<option value="false">{{ 'SETTINGS.SYSTEM.NET.WIFI.AUTH.WEP' | translate }}</option>
<option value="false">{{ 'SETTINGS.SYSTEM.NET.WIFI.AUTH.WPA2' | translate }}</option>
</select>
</div>
<fieldset ng-disabled="wifi.securitytype">
<div class="form-group" ng-class="{'has-error':wifiForm.password.$invalid && !wifi.securitytype}">
<label for="password">{{ 'SETTINGS.SYSTEM.NET.WIFI.PASSWORD' | translate }}</label>
<input class="form-control" name="password" placeholder="{{ 'SETTINGS.SYSTEM.NET.WIFI.PASSWORD_PLACEHOLDER' | translate }}" ng-model="wifi.wpakey" ng-pattern='/^(?!\s*$).+/' ng-model-options="{ updateOn: 'blur' }">
<span class="help-block ng-hide" ng-show="wifiForm.password.$invalid && !wifi.securitytype">RICHIESTA PASSWORD DI RETE</span>
</div>
</fieldset>
问题是 <fieldset>
曾经被禁用。我的错在哪里?
我认为您希望选项值是布尔类型。但是 HTML 属性始终是字符串,因此您应该在 "true" 或 "false" 两种情况下评估它们,如 here
所指出的尝试将 ng-disabled 条件替换为
<fieldset ng-disabled="'true' === wifi.securitytype">
wifi.securitytype
将 return 'true'
或 'false'
根据 javascript,它们是非空字符串并且是真实的,因此您的 ng-disabled
总是计算结果为 true
。你可以按照@Eirini的建议去做。