Как проверить флажок (обязательно), используя angularjs?

0

На этой странице перечислены магазины с флажками. Мне нужно поставить обязательное поле для флажка, если в этом флажке ничего не выбрано. Мне нужно поставить сообщение об ошибке в это поле обязательным и ничего не выбрано. Кнопка отправки должна быть отключена, если пользователь выбрал какой-либо из них в этом списке магазинов. Обязательное сообщение должно исчезнуть и отправить кнопку следует быть enabled.i уже сделали, но когда я проверил 3 магазина, то только сообщение исчезнет и кнопка отправки включена. Ожидание: когда пользователь проверял, кто-либо из перечисленных флажков, сообщение должно исчезнуть, а кнопка отправки должна быть включена. Если ничто не проверяется в этом флажке, а кнопка отправки должна быть отключена.

function Test1Controller($scope) {

    var serverData = ["Store1", "Store2", "Store3"];
    $scope.items = [];

    for (var i = 0; i < serverData.length; i++) {
        var modal = {
            name: serverData[i],
            selected: false
        };
        $scope.items.push(modal);
    }

    $scope.check = function() {
        var checkedItems = [];
        for (var i = 0; i < $scope.items.length; i++) {
            if ($scope.items[i].selected) {
                checkedItems.push($scope.items[i].name);
            }
        }
        console.log(checkedItems);
    }

}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js"></script>
<div ng-app>
    <form name="projectForm">
        <div ng-controller="Test1Controller">
            <div ng-repeat="item in items">
                <input type="checkbox" ng-model="item.selected" required="" /> {{item.name}}
            </div>
            <div class="form-error" ng-messages="projectForm.booktime.$error">
                <div class="form-error" ng-message="required">* Mandatory</div>
            </div>
            <input type="button" name="submit" value="submit" ng-disabled="projectForm.$invalid" ng-click="check()" />
        </div>
</div>
</form>
  • 1
    То же, что и этот ответ: stackoverflow.com/a/19633860/624590 (используйте группу флажков и функцию проверки, чтобы проверить, что что-то / что-либо выбрано)
  • 0
    извините, вы можете помочь мне, я сделал то же самое, но это не работает для меня
Показать ещё 1 комментарий
Теги:
checkbox

1 ответ

0

Я переделал несколько вещей в вашем коде и заставил его работать.

HTML:

<div ng-app="myApp">
<form name="projectForm">
    <div ng-controller="Test1Controller">
        <div ng-repeat="item in items">
            <input type="checkbox" ng-model="item.selected" ng-change="itemsChecked()" required="" /> {{item.name}}
        </div>
        <div class="form-error" ng-messages="projectForm.booktime.$error">
            <div class="form-error" ng-message="required" ng-show="!itemChecked">* Mandatory</div>
        </div>
        <input type="button" name="submit" value="submit" ng-disabled="!itemChecked" ng-click="check()" />
    </div>
</form>

В Javascript вы неправильно создавали контроллер. Сначала вы должны создать модуль, а затем присоединить контроллер к модулю, как показано ниже.

Javascript:

var app = angular.module("myApp", []);
app.controller("Test1Controller", function($scope) {
var serverData = ["Store1", "Store2", "Store3"];
$scope.items = [];

$scope.itemChecked = false;

for (var i = 0; i < serverData.length; i++) {
    var modal = {
        name: serverData[i],
        selected: false
    };
    $scope.items.push(modal);
}

$scope.itemsChecked = function() {
    $scope.itemChecked = false;
    for (var i = 0; i < $scope.items.length; i++)
    {
        if($scope.items[i].selected)
        {
            $scope.itemChecked = true;
        }
    }
}

$scope.check = function() {
    var checkedItems = [];
    for (var i = 0; i < $scope.items.length; i++) {
        if ($scope.items[i].selected) {
            checkedItems.push($scope.items[i].name);
        }
    }
    console.log(checkedItems);
}
});
  • 0
    нет, это не работает для меня
  • 0
    Тогда, должно быть, вы что-то не так понимаете ... Вот скрипка JS, показывающая, как это работает. jsfiddle.net/bq5c1txd

Ещё вопросы

Сообщество Overcoder
Наверх
Меню