1
値の重複がないフォームを検証しようとしています。 私は、IPアドレスのリストを含むサイトを持っています。 私からは多くのアドレスを追加することは可能ですが、それらは一意でなければなりません。角チェック重複入力
HTML:私もここにng-change:"verifyDuplicate()"
で試してみました
<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>
は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 –
の構造をソース(site.ips)をソースとする形式(html)で表示できます。また、 'verifyDuplicate'に' sites [0 ] '('サイト 'は配列でなければなりません)。これは一致するはずです。 '$ scope.site.ips [0]'をjs内で試してください –
あなたのコードに多くのエラーがありますが、 '$ duplicate'のバリデーションを設定したいのであれば**指示文を使わなければなりません。フォームは有効なままです。 – developer033