Как обновить другой флажок из флажка - PullRequest
0 голосов
/ 16 октября 2019

У меня странное поведение с моими флажками:

Я хочу иметь 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;
      }
}

Если у вас есть идеи, я быбудь очень рад

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Это не правильный способ сделать это, но мне это удается:

document.getElementById('Id').checked = true;

Так что я закрываю пост. Спасибо за вашу помощь

0 голосов
/ 16 октября 2019

Удалить первое условие:

$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;
      }
}

По понятным причинам.

...