所以,这是我这几天一直面临的问题。
我有一个 durandal 应用程序,我想在控件上应用 ko 验证。现在,验证确实得到应用,但问题是它在第一次加载时不会生效。例如,如果我有一个需要设置为 true 的文本框并且在加载时,此文本框是空的,KO 不显示所需的消息。
它仅在我在文本框中输入内容时显示消息,然后移出文本框,再次进入文本框,删除数据,然后再次移出文本框。
我什至尝试在 div 标签内的 HTML 中添加 ko.validation.init({messagesOnModified: false}) 和验证选项。
但没有影响。
下面是我的代码
define(function (require) {
ko.validation.init({
messagesOnModified: false
});
var duration = ko.observable().extend({
required: { message: 'Please enter valid number.' }, number: true
});
var email = ko.observable().extend({ email: true, required: true });
var vm = {
duration: duration,
email: email
};
vm["errors"] = ko.validation.group(vm);
return vm;
});
HTML 代码
<span data-bind="text: errors().length"></span> Errors
<div>
<label for="txtDuration">Duration</label>
<input name="txtDuration" type="text" data-bind="value: duration" />
<span>(Min)</span>
</div>
<div>
<label for="txtEmail">Email</label>
<input name="txtEmail" type="text" data-bind="value: email" />
</div>
<input type="submit" value="Submit" data-bind="enable: isValid()">
</form>
请帮忙。