我有一个视图页面,我正在使用knockout.js验证字段。我想用不同国家的语言验证我的字段,如西班牙语,法语等,即使用本地化。 我已将el-GR.js,fr-FR.js,ru-RU.js等文件添加到我的js文件夹中并引用它们。 现在我如何验证或检查我的modalModal.js页面?
modalModal.js
ko.validation.rules.pattern.message = 'Invalid.';
ko.validation.configure({
registerExtenders : true,
messagesOnModified : true,
insertMessages : true,
parseInputAttributes : true,
messageTemplate : null
});
var mustEqual = function (val, other) {
return val == other();
};
var modalViewModel= {
firstName : ko.observable().extend({
minLength : 2,
maxLength : 40
}),
lastName : ko.observable().extend({
minLength : 2,
maxLength : 10
}),
organisation : ko.observable().extend({
minLength : 2,
maxLength : 40
}),
email : ko.observable().extend({ // custom message
email: true
}),
password: ko.observable()
};
modalViewModel.confirmPassword = ko.observable().extend({
validation: { validator: mustEqual, message: 'Passwords do not match.', params:
modalViewModel.password }
});
modalViewModel.errors = ko.validation.group(modalViewModel);
// Activates knockout.js
ko.applyBindings(modalViewModel,document.getElementById('light'));
答案 0 :(得分:2)
我为最新的KO项目做了这个
我覆盖KO验证规则并使用Globalize插件,例如
ko.validation.rules.number.validator = function (value, validate) {
return !String.hasValue(value) || (validate && !isNaN(Globalize.parseFloat(value)));
};
ko.validation.rules.date.validator = function (value, validate) {
return !String.hasValue(value) || (validate && Globalize.parseDate(value) != null);
};
编辑:顺便说一句,Globalize插件中有一个错误,它会接受点(。)作为数字的一部分,即使它不是,我修复了这样的
Globalize.orgParaseFloat = Globalize.parseFloat;
Globalize.parseFloat = function (value) {
value = String(value);
var culture = this.findClosestCulture();
var seperatorFound = false;
for (var i in culture.numberFormat) {
if (culture.numberFormat[i] == ".") {
seperatorFound = true;
break;
}
}
if (!seperatorFound) {
value = value.replace(".", "NaN");
}
return this.orgParaseFloat(value);
};