나는 Durandal을 사용 중이며, 이는 Knockout을 활용합니다.넉 아웃 유효성 확인 : 동적 제약
내가 변경 검증 할 수 있도록하려면이
바이올린 내 "작업"솔루션보다 약간 다른 행동을 할 것으로 보인다
동적 길이,하지만 아직하고 있지 내가 원하는/기대하고있는 것.
뷰 모델 JS :
[시도 1] 일어나는 것으로 보인다 무엇
define(function() {
var self = this;
self.userInfo = {
IdOrPassportNumber: ko.observable().extend({
required: true,
pattern: {
message: 'A message',
params: /some regex/
}
}),
IdType: ko.observable()
},
self.isIdValid = ko.validatedObservable({
IdOrPassportNumber: self.userInfo.IdOrPassportNumber
});
self.userInfo.IdOrPassportNumber.subscribe(function (value) {
if (isIdValid.isValid()) {
console.log('YOLO!');
}
});
self.userInfo.IdType.subscribe(function (value) {
console.log(value);
if (value === 'Passport') {
self.userInfo.IdOrPassportNumber.extend({ maxLength: 15 });
} else {
self.userInfo.IdOrPassportNumber.extend({ maxLength: 13 });
}
});
var viewModel = {
userInfo: self.userInfo
};
viewModel["errors"] = ko.validation.group(viewModel.userInfo);
viewModel["errors"].showAllMessages();
return viewModel;
});
내가 입력을 시작할 때 13의 최대 & 분 유효성을 얻을 있지만 만약 15에 대한 유효성 검사 변경을 계속 입력합니다.초기 관찰 가능 확장 EG의 최대 길이를 정규식 바로 다음에 설정하고 관찰 가능을 사용하도록 최소 및 최대 길이를 설정하는 다른 경로를 시도했습니다. 성공.
I는 custom validation 특징을 살린,보다 구체적으로는 늘 다시 사용이 아니라 single use custom validation :
는 [시도 2] 여기
self.userInfo = {
IdOrPassportNumber: ko.observable().extend({
maxLength: self.maxLength(),
minlength: self.maxLength()
}),
IdType: ko.observable()
},
self.maxLength = ko.observable();
self.userInfo.IdType.subscribe(function (value) {
if (value === 'Passport') {
self.maxLength(15)
} else {
self.maxLength(3)
}
});
는 당신이 http://cdnjs.com/을 사용할 수 (즉, 어떻게 계산 있기 때문에 여기가의 함수로
countryCode()
를 호출해도 괜찮은지 일) 장소에서 계산 된 관찰을 정의 할 수 있습니다 녹아웃 유효성 검사 플러그인을 잡아 ... – nemesv완료. +1 Ps 아주 멋진 사이트. 확실히 북마크 됨 : –