如何在页面首次加载时停止触发验证?我希望在文本框被编辑或获得焦点并失去焦点时触发验证,但在页面首次加载时不触发验证。
我的加载代码:
$(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 'messagesOnModified: false' 中可能存在某些内容(我尝试了 true,然后将其全部删除)。
最佳答案
您的方向是正确的:您需要设置 messagesOnModified: true
否则验证消息也会在加载时显示。
但是它不适合您,因为您需要使用 validationMessage
binding在您的 messageTemplate
中,否则它将不遵守 messagesOnModified
设置。
因此您需要更改模板,如下所示:
<script type="text/html" id="customMessageTemplate">
<span data-bind="validationMessage: field"></span>
</script>
演示 JSFiddle .
关于javascript - 在 applyBindings (init/onload) 期间停止 Knockoutjs 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18969081/