Я пытаюсь проверить форму, где нет дублирования значений. У меня есть сайт, содержащий список адресов Ip. В моем из можно добавить много адресов, но они должны быть уникальными.Угловая проверка дублирования ввода
HTML:
<div class="col-sm-6">
<ul style="list-style-type: none;-webkit-padding-start: 0px;margin-bottom:0px">
<li ng-repeat="ip in site.ips track by $index | orderBy: '+ip.ip_adress'" style="margin-bottom:0px">
<ng-form name="ipForm">
<div class="input-group" style="margin-top:5px" ng-class="{ 'has-error' : !ipForm.ip_adress.$error.duplicate && ipForm.ip_adress.$invalid && !ipForm.ip_adress.$pristine }">
<input type="text" class="form-control input-sm" name="ip_adress"
ng-pattern='/^([0-9]{1,3})[.]([0-9]{1,3})[.]([0-9]{1,3})[.]([0-9]{1,3})$/'
style="display: inline;"
ng-model="ip.ip_adress"
placeholder="{{translate('config.sites.msg.site.ip.adress')}}"
required />
<div class="input-group-addon">
<i class="glyphicon glyphicon-remove-circle" ng-click="removeIp(site, ip, $index)"></i>
</div>
</div>
</ng-form>
</li>
</ul>
</div>
Я также попытался с ng-change:"verifyDuplicate()"
и вот JS
$scope.verifyDuplicate = function() {
var sorted, i;
sorted = $scope.sites[0].ips.sort(function (a, b) {
if (a.ip_adress > b.ip_adress) return 1;
if (a.ip_adress < b.ip_adress) return -1;
return 0;
});
for(i = 0; i < $scope.sites.ips.length; i++) {
sorted[i].isDuplicate = ((sorted[i-1] && sorted[i-1].ip_adress == sorted[i].ip_adress) || (sorted[i+1] && sorted[i+1].ip_adress == sorted[i].ip_adress));
}
}
и это выдаст ошибку: Cannot read property 'ips' of undefined
. Я также пробовал этот пример, но он не работает.
Любые предложения, пожалуйста?
можно показать структуру $ scope.sites –
в форме (html), вы используете 'site.ips' в качестве источника (' site.ips' должен быть массив), а в 'verifyDuplicate' вы используете' sites [0 ] '(' sites' должен быть массивом). Это должно совпадать. Попробуйте '$ scope.site.ips [0]' in js –
Кроме того, у вас много ошибок в вашем коде, если вы хотите установить подтверждение '$ duplicate', вы ** должны ** использовать директиву, иначе форма будет действительна. – developer033