javascript - 在 applyBindings (init/onload) 期间停止 Knockoutjs 验证

标签 javascript jquery validation knockout.js

如何在页面首次加载时停止触发验证?我希望在文本框被编辑或获得焦点并失去焦点时触发验证,但在页面首次加载时不触发验证。

我的加载代码:

    $(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/

相关文章:

javascript - "Unresolved function or method"与 Passport.JS

javascript - 将数据从父组件传递到子组件时,为什么无法将数据绑定(bind)到 v-model?

ruby-on-rails - 验证 Rails 属性存在但允许空字符串

c# - 通过 DataAnnotations 创建自定义验证?

javascript - 拖动比例尺作为组

javascript - 如何将 PHP 数组值引入 Javascript?

javascript - 如何使用 jquery 重新排序表单字段

在启动时设置值时,jQuery 验证器 "required"不起作用

javascript - 如何在 blur/focusOut 后重置 div w Contenteditable

jquery - Bootstrap 4.3.0 工具提示与 jQuery UI 1.12.1 冲突