2014-01-07 3 views
2

Я использую проверку нокаута, когда пытаюсь проверить свойство isValid, это всегда верно. любые советы очень восприимчивы.Плагин проверки нокаута - isValid() всегда возвращает true

мой 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() представить.

ответ

3

Вам необходимо позвонить по телефону 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)); 

}); 

Demo JSFiddle.

Однако если вы используете последнюю версию плагина для проверки с GitHub, то вам не нужно звонить ko.validation.registerExtenders();: Demo.

+0

Спасибо nemesv, он работает нормально. – Bumble

Смежные вопросы