gpt4 book ai didi

knockout.js - knockout 验证 - 空时不验证输入 + 提交时评估

转载 作者:行者123 更新时间:2023-12-04 02:56:19 25 4
gpt4 key购买 nike

检查这个 fiddle :

http://jsfiddle.net/bhzrw01s/

我试图做两件事:

第一:当字段为空时不要验证。我知道有一个 onlyif 选项..但是有什么更简单的吗?

第二:当我点击提交时,我需要一些东西来运行验证(如果你测试我的 fiddle ,错误消息会弹出,但不会应用 errorClass css)

感谢:D

css:

input.error {
color: red;
border-color: red;
}

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());
});

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>

最佳答案

第一个解决方案将完成您所要求的 90%。它不会显示任何验证,直到用户点击提交,或者直到他们删除以前填充的字段。一旦他们打破密封(可以这么说),他们将收到该领域的实时验证反馈。这是我将使用的解决方案,因为它是 knockout validation 的行为方式。

http://jsfiddle.net/k08m4dfx/

    self.login = function (e) {
if (self.errors().length > 0) {
self.errors.showAllMessages(true);
this.errors().forEach(function(data) {
alert(data);
});
}
}

如果由于某种原因您必须推迟所有验证反馈直到他们点击,那么您可能会混淆 isModified 标志以获得您想要的行为。不过对我来说似乎有点笨拙。

http://jsfiddle.net/zd97gjg4/
    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
});

关于knockout.js - knockout 验证 - 空时不验证输入 + 提交时评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25770933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com