【问题标题】:Knockout validation plugin - isValid( ) always returns true淘汰赛验证插件 - isValid() 总是返回 true
【发布时间】:2014-01-07 23:47:28
【问题描述】:

我正在使用 knockout-validation ,当尝试检查 isValid 属性时,它总是正确的。任何建议都非常受欢迎。

我的 html 标记

<div class="login">
        <h1>
            Customer login</h1>
        <form action="/Home/login" method="post">
        <div class="fontStyle">
            <fieldset>
                <legend></legend>
                <div>
                    <label for="User-id">
                        User Id</label>
                    <input id="User-id" name="username" data-bind='value:UserName, valueUpdate: "afterkeydown"'  type="text" value=""/>
                    <span data-bind='visible: UserName.hasError, text: UserName.validationMessage'> </span>
                </div>
                <div>
                    <label for="Password">
                        Password</label>
                    <input id="Password" name="password" data-bind='value:Password, valueUpdate: "afterkeydown"'  type="password" value="" />
                    <span data-bind='visible: Password.hasError, text: Password.validationMessage'> </span>
                </div>
                <div>
                    <label>
                        &nbsp;</label>
                    <input type="submit" data-bind='click:submit' class="button" value="Login" />
                </div>
            </fieldset>
        </div>

my javascript code block is 



    var loginModule = (function () {
    $(document).ready(function () {

        var userName = $('input:text[name=username]').val();
        var password = $('input:text[name=password]').val();
        ko.applyBindings(new viewmodel(userName, password));

    });

    ko.validation.registerExtenders();
    var viewmodel = function (username, password) {
        var that = this;
        that.UserName = ko.observable(username).extend({ required: "User Id required", minLength: 5, maxLength: 10 });
        that.Password = ko.observable(password).extend({ required: "Password required" });

        that.valid = ko.validatedObservable(that);
        that.submit = function () {

        //trying to check user name is valid or not
            alert(that.UserName.isValid());

        };
    };

    return {
        viewmodel: viewmodel
    }
})();

当用户点击提交按钮时,我想通过检查 isValid() 方法来验证。

【问题讨论】:

    标签: knockout.js knockout-validation


    【解决方案1】:

    您需要调用ko.validation.registerExtenders(); 之前 使用任何验证 ko.validation 提供的扩展程序。

    所以在创建 viewmodel 之前移动这一行:

    $(document).ready(function () {
        var userName = $('input:text[name=username]').val();
        var password = $('input:text[name=password]').val();
        ko.validation.registerExtenders();
        ko.applyBindings(new viewmodel(userName, password));
    
    });
    

    演示JSFiddle.

    但是,如果您使用的是来自 GitHub 的最新版本的验证插件,则无需再调用 ko.validation.registerExtenders();Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2011-08-09
      • 2012-10-10
      • 2015-02-28
      • 2017-11-29
      • 2014-12-13
      相关资源
      最近更新 更多