На этой странице перечислены магазины с флажками. Мне нужно поставить обязательное поле для флажка, если в этом флажке ничего не выбрано. Мне нужно поставить сообщение об ошибке в это поле обязательным и ничего не выбрано. Кнопка отправки должна быть отключена, если пользователь выбрал какой-либо из них в этом списке магазинов. Обязательное сообщение должно исчезнуть и отправить кнопку следует быть 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>
Я переделал несколько вещей в вашем коде и заставил его работать.
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);
}
});