我的复选框有一个奇怪的行为:
我想有9个复选框:一个用于“星期”,一个用于“周末”,以及所有工作日的7个。当我单击“星期”时,我想将选定的星期一设置为星期五,而当我单击“周末”时则为星期六和星期日。我成功做到了,但是当我想做相反的操作时(当我单击星期一,星期二,星期三,星期四和星期五时,我想将选定的星期或同一件事设置为周末)就不起作用。
我注意到在我的valueChange函数中,我需要做
$scope.weekCBox = !$scope.weekCBox;
用于更新我的HTML复选框周
但星期一没有,我发现这真的很奇怪,因为它们的定义方式相同:
这是我的html:
<div style="display:block;">
<b>Semaine</b>
<input type="checkbox" ng-model="weekCbox.value"
ng-change="valueWeekChange($index)"
onkeypress='return (event.charCode >=45 && event.charCode <=57)||event.charCode==0'>
</div>
<div style="display:block;">
<b>Weekend</b>
<input type="checkbox" ng-model="weekendCbox.value"
ng-change="valueWeekendChange($index)"
onkeypress='return (event.charCode >=45 && event.charCode <=57)||event.charCode==0'>
</div>
<div style="display:block;">
Lundi <input type="checkbox" ng-model="mondayCBox.value"
ng-change="valueMondayChange($index)"
onkeypress='return (event.charCode >=45 && event.charCode <=57)||event.charCode==0'>
Mardi <input type="checkbox" ng-model="tuesdayCBox.value" ng-change="valueTuesdayChange($index)" onkeypress='return (event.charCode >=45 && event.charCode <=57)||event.charCode==0'>
Mercredi <input type="checkbox" ng-model="wednesdayCBox.value" ng-change="valueWednesdayChange($index)" onkeypress='return (event.charCode >=45 && event.charCode <=57)||event.charCode==0'>
Jeudi <input type="checkbox" ng-model="thursdayCBox.value" ng-change="valueThursdayChange($index)" onkeypress='return (event.charCode >=45 && event.charCode <=57)||event.charCode==0'>
Vendredi <input type="checkbox" ng-model="fridayCBox.value" ng-change="valueFridayChange($index)" onkeypress='return (event.charCode >=45 && event.charCode <=57)||event.charCode==0'>
Samedi <input type="checkbox" ng-model="saturdayCBox.value" ng-change="valueSaturdayChange($index)" onkeypress='return (event.charCode >=45 && event.charCode <=57)||event.charCode==0'>
Dimanche <input type="checkbox" ng-model="sundayCBox.value" ng-change="valueSundayChange($index)" onkeypress='return (event.charCode >=45 && event.charCode <=57)||event.charCode==0'>
</div>
这是我的JS代码:
$scope.mondayCBox = {
value: false
};
...
$scope.weekendCBox = {
value: false
};
$scope.valueWeekChange = function(index)
{
$scope.weekCBox.value = !$scope.weekCBox.value;
$scope.mondayCBox.value = $scope.weekCBox.value;
$scope.tuesdayCBox.value = $scope.weekCBox.value;
$scope.wednesdayCBox.value = $scope.weekCBox.value;
$scope.thursdayCBox.value = $scope.weekCBox.value;
$scope.fridayCBox.value = $scope.weekCBox.value;
}
$scope.valueWeekendChange = function(index)
{
$scope.weekendCBox.value = !$scope.weekendCBox.value;
$scope.saturdayCBox.value = $scope.weekendCBox.value;
$scope.sundayCBox.value = $scope.weekendCBox.value;
}
$scope.valueMondayChange = function(index)
{
$scope.updateWeekCBox();
}
...
$scope.valueSundayChange = function(index)
{
$scope.updateWeekendCBox();
}
$scope.updateWeekendCBox = function()
{
if ($scope.saturdayCBox.value==false || $scope.sundayCBox.value==false)
{
$scope.weekendCBox.value = false;
}
if ($scope.saturdayCBox.value==true && $scope.sundayCBox.value==true)
{
$scope.weekendCBox.value = true;
}
}
$scope.updateWeekCBox = function()
{
if ($scope.mondayCBox.value==false || $scope.tuesdayCBox.value==false || $scope.wednesdayCBox.value==false || $scope.thursdayCBox.value==false || $scope.fridayCBox.value==false)
{
$scope.weekCBox.value = false;
}
if ($scope.mondayCBox.value==true && $scope.tuesdayCBox.value==true && $scope.wednesdayCBox.value==true && $scope.thursdayCBox.value==true && $scope.fridayCBox.value==true)
{
$scope.weekCBox.value = true;
}
}
如果您有任何想法,我将非常高兴
答案 0 :(得分:0)
删除第一个条件:
$scope.updateWeekendCBox = function() {
̶i̶f̶ ̶(̶$̶s̶c̶o̶p̶e̶.̶s̶a̶t̶u̶r̶d̶a̶y̶C̶B̶o̶x̶.̶v̶a̶l̶u̶e̶=̶=̶f̶a̶l̶s̶e̶ ̶|̶|̶ ̶$̶s̶c̶o̶p̶e̶.̶s̶u̶n̶d̶a̶y̶C̶B̶o̶x̶.̶v̶a̶l̶u̶e̶=̶=̶f̶a̶l̶s̶e̶)̶
$scope.weekendCBox.value = false;
if ($scope.saturdayCBox.value==true && $scope.sundayCBox.value==true)
{
$scope.weekendCBox.value = true;
}
}
并且:
$scope.updateWeekCBox = function(){
̶ ̶i̶f̶ ̶(̶$̶s̶c̶o̶p̶e̶.̶m̶o̶n̶d̶a̶y̶C̶B̶o̶x̶.̶v̶a̶l̶u̶e̶=̶=̶f̶a̶l̶s̶e̶ ̶|̶|̶ ̶$̶s̶c̶o̶p̶e̶.̶t̶u̶e̶s̶d̶a̶y̶C̶B̶o̶x̶.̶v̶a̶l̶u̶e̶=̶=̶f̶a̶l̶s̶e̶ ̶|̶|̶ ̶$̶s̶c̶o̶p̶e̶.̶w̶e̶d̶n̶e̶s̶d̶a̶y̶C̶B̶o̶x̶.̶v̶a̶l̶u̶e̶=̶=̶f̶a̶l̶s̶e̶ ̶|̶|̶ ̶$̶s̶c̶o̶p̶e̶.̶t̶h̶u̶r̶s̶d̶a̶y̶C̶B̶o̶x̶.̶v̶a̶l̶u̶e̶=̶=̶f̶a̶l̶s̶e̶ ̶|̶|̶ ̶$̶s̶c̶o̶p̶e̶.̶f̶r̶i̶d̶a̶y̶C̶B̶o̶x̶.̶v̶a̶l̶u̶e̶=̶=̶f̶a̶l̶s̶e̶)̶
$scope.weekCBox.value = false;
if ($scope.mondayCBox.value==true && $scope.tuesdayCBox.value==true && $scope.wednesdayCBox.value==true && $scope.thursdayCBox.value==true && $scope.fridayCBox.value==true)
{
$scope.weekCBox.value = true;
}
}
出于明显的原因。
答案 1 :(得分:0)
这不是正确的方法,但我成功做到了:
document.getElementById('Id').checked = true;
所以我关闭了该职位。谢谢您的帮助