Tôi đang sử dụng Durandal, do đó tận dụng hết Knockout.Xác nhận loại bỏ: Hạn chế động
Tôi muốn để có thể Thay đổi xác nhận độ dài động
Các fiddle dường như được cư xử hơi khác so với tôi giải pháp "làm việc", nhưng nó vẫn không làm những gì tôi muốn/mong đợi nó.
ViewModel JS:
[Cố gắng 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;
});
gì dường như xảy ra là khi tôi bắt đầu gõ tôi nhận được tối đa & xác phút 13, nhưng nếu tôi tiếp tục gõ các thay đổi xác nhận 15. Tôi đã thử một tuyến đường khác, thiết lập chiều dài tối thiểu & tối đa trong vòng mở rộng EG có thể quan sát được, ngay sau regex, và sau đó thiết lập độ dài tối thiểu và tối đa để sử dụng một quan sát, không sự thành công.
[Cố gắng 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)
}
});
bạn có thể sử dụng để http://cdnjs.com/ lấy plugin xác nhận loại trực tiếp ... – nemesv
Xong. +1 Ps trang web rất tuyệt. Được đánh dấu là chắc chắn :) –