【问题标题】:KO validation group errorKO 验证组错误
【发布时间】:2014-08-27 21:34:30
【问题描述】:

我正在使用一个简单的登录页面来捕获登录名和密码。当用户点击忘记密码按钮时,我只验证登录文本框。

它在初始页面加载时运行良好。最初,如果我将用户 ID 保持为空并单击忘记密码会触发验证错误,并且如果我更正了该错误,我仍然会在错误对象中得到空值。我不确定这个 null 值是从哪里来的。

我的代码跟随

Javascript

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

     var userName = $('input:text[name=username]').val();
     var password = $('input:text[name=password]').val();

     ko.validation.registerExtenders();
     ko.validation.init();
     ko.applyBindings(new viewmodel(userName, password));

});



var viewmodel = function (username, password) {

    var self = this;

    self.UserName = ko.observable(username).extend({ required: { message: 'User Id is required.' }, minLength: 5, maxLength: 10 });

    self.Password = ko.observable(password).extend({ required: { message: 'Password is required.' }, minLength: 5, maxLength: 10 });

     self.forgotPassword = function () {

        var fperrors = ko.validation.group(self.UserName, { deep: false});

         if (fperrors().length > 0) {

            $('#errorMsg').show();

            fperrors.showAllMessages();

        }

        else {

            //valid code

        }

     };
};

 return {
    viewmodel: viewmodel

}

})();

如果我改变 var fperrors = ko.validation.group(self.UserName, { deep: false});

到 var fperrors = ko.validation.group(self.UserName(), { deep: false});

它根本没有抛出验证错误。

HTML 标记

<P>

<p>

<span class="error" data-bind='visible: UserName.hasError, text: UserName.validationMessage'></span>

</p>

<LABEL class="field-label" for="User-id">User ID / alias<EM class=mandatory>*</EM></LABEL><input id="User-id" name="username" class=field-stretch data-bind='value:UserName, valueUpdate: "afterkeydown"'

                        type="text" value="" /></P>

<P>

<p><span class="error" data-bind='visible: Password.hasError, text: Password.validationMessage'></span></p>

<LABEL class=field-label for=Password>Password<EM class=mandatory>*</EM></LABEL>   <input id="Password" name="password" class=field-stretch data-bind='value:Password, valueUpdate: "afterkeydown"' type="password" value="" /></P>

<P class="text-left btn-wrap"><INPUT class="btn-primary" data-bind='click:submit'  value="Logon" type=submit> &nbsp; <INPUT data-bind='click:forgotPassword' class=btn-primary value="Forgotten password?" type=submit>  </P>

有人可以帮忙看看有什么问题吗?

【问题讨论】:

  • 你能展示你的html吗?

标签: validation knockout.js knockout-validation


【解决方案1】:

我不知道为什么,但在我的测试中,我必须将 observable 作为数组传递才能使其工作:

var fperrors = ko.validation.group([self.UserName], { deep: false});

http://jsfiddle.net/LHy6h/

【讨论】:

  • 谢谢,它工作正常。不知道为什么我需要将 observable 作为数组传递。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 2011-05-22
  • 1970-01-01
  • 2012-11-02
  • 2018-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多