2014-12-04 5 views
0

내가 직면하고 문제는 스크립트 아래에 포함했다녹아웃 텍스트 상자 유효성 검사 오류

$(document).ready(function() { 

     ko.validation.registerExtenders(); 

     ko.validation.configure({ 
      registerExtenders: true, 
      decorateElement: true 
     }); 

     var vm = ko.validatedObservable({ 

      text: ko.observable().extend({ 
       required: true 
      }), 
      save: function() { 
       debugger; 
       if (this.isValid()) { 
        alert('success'); 
       } 
       else { 
        this.errors.showAllMessages(); 
        alert('error'); 
       } 
      } 
     }); 
     ko.applyBindings(vm); 

    }); 

내 스크립트 내 html로 여기

<input type="text" data-bind="value:text" /> 
<br /> 
<br /> 
<input type="button" data-bind="click:save" value="save" /> 

입니다

<script src="/Scripts/jquery-2.1.1.min.js" type="text/javascript"></script> 
<script src="/Scripts/knockout-2.1.0.js" type="text/javascript"></script> 
<script src="/Scripts/knockout.mapping-latest.js" type="text/javascript"></script> 
<script src="/Scripts/knockout.validation.min.js" type="text/javascript"></script> 

내가 이것을 실행하면 "this.isValid()"에서 함수가 아닌 Undefined가됩니다.

도와주세요.

+0

당신은 말로의 시작해야을 var에 자체 =이; 혼란을 피하기 위해 VM을 초기화 할 때. 그가 isValid()를 찾지 못해서 얻은 오류. 그것을 스스로 변경하십시오. 그래도 문제가 해결되지 않으면 모든 스크립트가 실제로 올바르게 포함되었는지 확인하십시오. – sander

+0

저장 기능 및 검사 된 스크립트에서 var self = this를 추가했지만 동일한 오류가 발생했습니다. 제발 도와주세요. – user1551433

+0

당신이 오해했습니다. var self = this를 추가해야합니다. var vm = ko.validatedObservable ({if if (this.isValid())를 if (self.isValid())로 변경하고 다시 확인하십시오. – sander

답변

0

내가 validatedObservable을 사용하려면이 패턴을 선호 - http://codepen.io/dmoojunk/pen/PwNbEL

ko.validation.registerExtenders(); 

ko.validation.configure({ 
    registerExtenders: true, 
    decorateElement: true 
}); 

var vm = function(){ 
    var self = this; 
    self.text= ko.observable().extend({ 
    required: true 
    }), 
    self.save= function() { 
    if (this.isValid()) { 
     alert('success'); 
    } 
    else { 
     this.errors.showAllMessages(); 
     alert('error'); 
    } 
    } 
}; 
var viewmodel = ko.validatedObservable(new vm())(); 
ko.applyBindings(viewmodel);