dda*_*crs 5 knockout.js knockout-validation
检查这个小提琴:
我试图做两件事:
第一:当字段为空时不要验证.我知道有一个onlyif选项..但是有更容易的东西吗?
第二:当我点击提交时我需要运行验证的东西(如果你测试我的小提琴,错误消息会弹出,但不会应用errorClass css)
感谢:D
CSS:
input.error {
color: red;
border-color: red;
}
Run Code Online (Sandbox Code Playgroud)
JS:
ko.validation.configure({
insertMessages: false,
decorateElement: true,
errorElementClass: 'error',
messagesOnModified: false
});
function SignInViewModel() {
var self = this;
self.userName = ko.observable().extend({
required: true
});
self.password = ko.observable().extend({
required: true
});
self.errors = ko.validation.group(self);
self.login = function (e) {
if (self.errors().length == 0) {
alert('No errors');
} else {
this.errors().forEach(function(data) {
alert(data);
});
//self.errors.showAllMessages(true);
}
}
}
$(function () {
ko.applyBindings(new SignInViewModel());
});
Run Code Online (Sandbox Code Playgroud)
HTML:
<form>
<fieldset>
<legend>User: <span data-bind='text: errors().length'></span> errors</legend>
<label>User name: <input data-bind='value: userName' type="text"/></label><br/>
<label>Password: <input data-bind='value: password' type="password"/></label>
</fieldset>
<button type="button" data-bind='click: login'>Login</button>
</form>
Run Code Online (Sandbox Code Playgroud)
第一个解决方案将完成您所要求的90%.在用户点击提交之前,或者在删除之前填充的字段之前,它不会显示任何验证.一旦他们打破密封(可以这么说),他们将收到该领域的实时验证反馈.这是我将使用的解决方案,因为它是淘汰验证的行为方式.
self.login = function (e) {
if (self.errors().length > 0) {
self.errors.showAllMessages(true);
this.errors().forEach(function(data) {
alert(data);
});
}
}
Run Code Online (Sandbox Code Playgroud)
如果出于某种原因,您必须将所有验证反馈推迟到他们单击之后,那么您可能会混淆isModified标志以获得所需的行为.虽然这对我来说似乎有些愚蠢.
ko.extenders.deferValidation = function (target, option) {
if (option) {
target.subscribe(function(){
target.isModified(false);
});
}
return target;
};
self.userName = ko.observable().extend({
required: {message: 'User name is required' },
deferValidation: true
});
self.password = ko.observable().extend({
required: {message: "Password is required" },
deferValidation: true
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8473 次 |
| 最近记录: |