【发布时间】:2017-07-03 15:37:16
【问题描述】:
验证 IP:PORT 的指令
myApp.directive("validateServerAddress", ['input', function (input) {
var linker = function (scope, element, attrs) {
alert('Tese');
var parts = input.split(":");
var ip = parts[0].split(".");
var port = parts[1];
return validateNum(port, 1, 65535) &&
ip.length == 4 &&
ip.every(function (segment) {
return validateNum(segment, 0, 255);
});
scope.validateNum = function(input, min, max) {
var num = +input;
return num >= min && num <= max && input === num.toString();
}
};
return {
restrict: "EA",
link: linker
};
}]);
HTML 输入
<div class="input-group">
<input type="text" validate-serveraddress placeholder="255.255.255.255:5000" name="serveraddress" id="serveraddress" class="color-tooltip form-control" ng-model="serveraddress" required>
</div>
在用户输入有效的 IP:PORT 地址之前,我需要显示自定义错误消息“无效的服务器地址”。该指令运行良好。下面可以使用并且可以应用自定义类,但我需要像引导程序一样显示必填字段的消息。
document.querySelector("input").oninput = function (e) {
this.className = validateIpAndPort(this.value) ? "" : "invalid";
}
.invalid {
color: red;
}
如何通过指令使用 ngMessages 显示自定义验证,如下图所示?
【问题讨论】:
-
在指令中使用 ngModel,然后使用 ngModel.$validators
-
@FetraR 您能否详细说明一些代码 sn-p 或更改上述指令?
-
@Slimshadddyyy 给你plnkr.co/edit/KI9jAqPRkLTYm5EvBKza?p=preview
标签: javascript angularjs angularjs-directive