2013-05-21 5 views
1

knockoutjs 및 knockoutvalidation을 사용하는 간단한 양식이 있습니다. comptability 모드에서 IE를 실행할 때 다음과 같은 행동을합니다.넉 아웃 유효성 검증 필요 IE8

필드가 필요합니다 : 페이지를로드 할 때

self.oldPassword = ko.observable().extend({ required: true}); 

라는 메시지가 디버그 모드에서 볼 수 있습니다 필드는 필요합니다.

하지만 입력을 시작하면 오류가 다음으로 변경됩니다. true 이상인 값을 입력하십시오.

나는 적어도 IE8 이상을 지원하기 위해 여기에서 길을 잃었습니다. IE10, Chrome 또는 FireFox에서이 문제가 발생하지 않습니다. 그리고 녹아웃 모델과 유효성 검사로 모든 ​​자바 스크립트 파일을 다시 작성하고 싶지 않습니다.

이 문제는 익숙한가요? 그리고 해결책이 있습니까?

답변

0

나는 최소 유효성 검사 규칙의 인스턴스에 대해 VM을 검사하고 이것이 true로 설정되지 않았는지 확인합니다. 그 오류 메시지는 내장 min 규칙에 따라 다르며 해당 규칙에 대해 params를 true로 설정하면 해당 오류 메시지가 튀어 나옵니다. 당신이 전혀 분 규칙을 사용 didnt는 경우

var vm = function() { 
    var self = this; 

    self.oldPassword = ko.observable().extend({ required: true }); 

    self.oldPassword.extend({ 
     min: true 
    }); 
} 

하면, 녹아웃 검증 JS 파일이 잘못되었거나 뭔가 이상한 있지 않은지 확인 :

가 난 다음에이 문제를 다시.

1

녹아웃 유효성 검사는 관찰 가능 항목이 바인드 된 요소에 html-5 유효성 검사 속성이 지정되어 있는지 확인하고 동일한 유효성 검사 규칙을 추가합니다. 그들 각각에 대해

var html5Attributes = ['required', 'pattern', 'min', 'max', 'step']; 

가 hasAttribute 함수를 호출 : IE7/IE8 호환성 모드에서

hasAttribute: function (node, attr) { 
    return node.getAttribute(attr) !== null; 
} 

node.getAttribute이 (ATTR) 빈 문자열을 반환을이 HTML-5 검증의 목록이 확인 속성입니다 속성이 발견되지 않으면이 표현식 "node.getAttribute (attr)! == null"은 항상 참입니다.

호환성 모드에서 사용자가 관찰 할 수있는 유효성 검사 규칙은 5 가지입니다. 다행히도이 모든 내용은 실제 IE7/IE8과 관련이 없습니다.

+0

동일한 문제가 있었으며 일부 해킹 방법으로 해결하려고했습니다. 호환성 모드에서 문제가되는 것이 기쁘다. 나는 IE 8로 VM을 설정할 시간이있을 때 그것을 테스트해야 할 것이다. – bsayegh