1
我想驗證一個沒有重複值的表單。 我有一個網站包含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 –
的結構,你可以使用'site.ips'作爲源代碼('site.ips'應該是數組),在'verifyDuplicate'中使用'sites [0 ]'('sites'應該是數組)。這應該匹配。在js –
中試試'$ scope.site.ips [0]'除了你的代碼有很多錯誤之外,如果你想設置'$ duplicate'的驗證,你必須**使用指令,否則表格將保持有效。 – developer033