我想知道,如何在我的方法中调用jquery validate的另一个自定义验证方法来验证一些数据。例如,我有一个名为'Document ID'的字段,可以接受CPF或CNPJ(都是巴西文档),我需要用jquery验证来验证它。我正在做这样的事情:
jQuery.validator.addMethod("cpf", function(value, element) {
// my validation for CPF Documents
}, "CPF inválido!");
jQuery.validator.addMethod("cnpj", function(value, element) {
// my validation for CNPJ Documents
}, "CNPJ inválido!");
当我为每种类型都有一个字段时,两者都工作正常,但我只有一个,我必须在textfield上发现我的用户类型并验证它,有些像这样:
jQuery.validator.addMethod("documentoId", function(value, element) {
if (value.lenght <= 11) {
// validation for CPF and change the message
}
else if (value.lenght <= 14) {
// validation for CNPJ and change the message
}
}, 'Documento inválido');
但我不知道如何在我的另一个函数(documentId)中调用这些自定义函数(cpf和cnpj)。
我该怎么办?以及如何更改自定义验证中的消息?
谢谢! 干杯!
,我已将代码发布到jsbin中答案 0 :(得分:4)
这个怎么样?
jQuery.validator.addMethod("documentoId", function(value, element) {
if (value.length <= 11) {
jQuery.validator.methods.cpf.call(this, value, element);
}
else if (value.length <= 14) {
jQuery.validator.methods.cnpj.call(this, value, element);
}
}, 'Documento inválido');
更改错误消息的完整示例
jQuery.validator.addMethod("documento", function(value, element) {
// remove pontuações
value = value.replace('.','');
value = value.replace('.','');
value = value.replace('-','');
value = value.replace('/','');
if (value.length <= 11) {
if(jQuery.validator.methods.cpf.call(this, value, element)){
return true;
} else {
this.settings.messages.documento.documento = "Informe um CPF válido.";
}
}
else if (value.length <= 14) {
if(jQuery.validator.methods.cnpj.call(this, value, element)){
return true;
} else {
this.settings.messages.documento.documento = "Informe um CNPJ válido.";
}
}
return false;
}, "Informe um documento válido.");
答案 1 :(得分:2)
jQuery.validator.addMethod("cnpj", function(value, element) {
return this.optional(element) || /^[0-9]{2}.[0-9]{3}.[0-9]{3}?\/[0-9]{4}-[0-9]{2}$/.test(value);
}, "Formato: 00.000.000/0000-00");
答案 2 :(得分:1)
如何在验证定义范围之外创建这些函数(即不使用匿名函数)?
function cpfValide(value,element) {
//something
}
function cnpjValide(value,element){
//something
}
jQuery.validator.addMethod("cpf", cpfValide, "CPF inválido!");
jQuery.validator.addMethod("documentoId", function(value, element) {
return cpfValidate(value,element) || cnpjValidate(value,element);
//..
}