如何在首次加载页面时停止验证?我希望验证在文本框被编辑时触发,或者具有焦点并失去焦点,但不是在页面首次加载时触发。
我的加载代码:
$(document).ready(function () {
ko.validation.configure({
registerExtenders: true,
messagesOnModified: false,
decorateElement: true,
errorClass: 'error',
insertMessages: true,
parseInputAttributes: true,
messageTemplate: 'customMessageTemplate'
});
ko.applyBindings(new UserAccount(initdata), $("#UserAccount").get(0));
});
function UserAccount(data) {
var self = this;
self.UserName = ko.observable(data.UserName).extend({ required: { message: "Username is required" }, minlength: 6, maxLength: 12 });
self.Password = ko.observable(data.Password).extend({ required: { message: "Password is required" }, minlength: 6, maxLength: 12 });
self.Firstname = ko.observable(data.Firstname).extend({ required: { message: "Firstname is required" }, minlength: 6, maxLength: 40 });
...... other code .....
}
我一直在努力研究这个问题,但似乎没有任何问题可行。我认为ko.validation.configuration'messageOnModified:false'中可能存在某些内容(我尝试了,并将其全部删除)。
答案 0 :(得分:3)
您走在正确的轨道上:您需要设置messagesOnModified: true
,否则验证消息也会在加载时显示。
但是它不适合您,因为您需要使用messageTemplate
中的validationMessage
binding,否则它将无法遵守messagesOnModified
设置。
所以你需要改变你的模板:
<script type="text/html" id="customMessageTemplate">
<span data-bind="validationMessage: field"></span>
</script>
演示JSFiddle。