我有4个复选框在一个页面上,并且一个按钮,只有在复选框被选中时才会启用。当一些复选框被隐藏时,我遇到了问题。当它们被隐藏时,我无法检查它们,然后该按钮将永远不会被启用,因为所有的框都未被选中。我想要做的是使复选框不需要启用按钮,如果他们隐藏。我脑海中描绘的方式将会是一连串的if/else陈述,只会是丑陋而复杂的。我知道必须有一个更简单的解决方案,我似乎无法将我的头围绕在它将会发生的事情上。我将提供复选框和按钮的代码,然后描述我在想什么会起作用,这样您就可以了解为什么我认为可能有一种更简单的方法。另外,我们在这个网络应用中使用Angular。不知道这是否会影响解决方案,但我想我会提及它。使复选框无需启用按钮,如果隐藏
的复选框的代码是:
<div>
<input type="checkbox" id="bes-confirmation" ng-model="checkboxes.besConfirmation" ng-show="migrationState.migrationData.usersWithBESEnabled.length > 0" />
<label for="bes-confirmation" ng-show="migrationState.migrationData.usersWithBESEnabled.length > 0" >I understand -- BES</label>
<br />
<input type="checkbox" id="public-folder-confirmation" ng-model="checkboxes.publicFolderConfirmation" ng-show="migrationState.migrationData.publicFoldersEnabled"/>
<label for="public-folder-confirmation" ng-show="migrationState.migrationData.publicFoldersEnabled" >I understand -- PF</label>
<br />
<input type="checkbox" id="adr-confirmation" ng-model="checkboxes.adrConfirmation" ng-show="!migrationState.migrationData.adrRecordIsCorrect" />
<label for="adr-confirmation" ng-show="!migrationState.migrationData.adrRecordIsCorrect" >I understand -- ADR</label>
<br />
<input type="checkbox" id="sdr-confirmation" ng-model="checkboxes.sdrConfirmation" ng-show="migrationState.migrationData.splitDomainRoutingEnabled"/>
<label for="sdr-confirmation" ng-show="migrationState.migrationData.splitDomainRoutingEnabled">I understand -- SDR</label>
</div>
按钮是:
<button type="button"
ng-click="scheduleMigration()"
ng-disabled="!allCheckboxesAreChecked()">
Schedule Migration!
</button>
的allCheckBoxesAreChecked功能是:
$scope.allCheckboxesAreChecked = function() {
return $scope.checkboxes.besConfirmation && $scope.checkboxes.adrConfirmation && $scope.checkboxes.sdrConfirmation && $scope.checkboxes.publicFolderConfirmation;
}
我想我可以有一个系列的,如果/ else语句只是类似的(为了简单起见,用伪代码写)
if !publicFoldersEnabled
return besConfirmation && sdrConfirmation && adrConfirmation
else if !splitDomainRoutingEnabled
return sdrConfirmation && adrConfirmation && publicFolderConfirmation
等等
我会继续与可见和隐藏复选框的每一个可能的组合,但我觉得必须有一个更好的方式来做到这一点。关于如何更容易/更清晰并且比一系列if/else语句更少的代码,我有何想法?谢谢!
谢谢!我认为这将会诀窍。感谢帮助。 – AJM 2014-10-02 23:49:11