Пользовательская проверка для jQuery Validate (два метода в одном) - PullRequest
1 голос
/ 12 сентября 2011

Я хотел бы знать, как я могу вызвать другой пользовательский метод проверки jquery validate в моем методе для проверки некоторых данных. Например, у меня есть поле с именем «Document ID», которое может принимать CPF или CNPJ (оба документа являются бразильскими), и мне нужно проверить его с помощью jquery validate. Я делаю что-то вроде этого:

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!");

Оба отлично работают, когда у меня есть одно поле для каждого типа, но у меня есть только одно, и мне нужно узнать, какой у меня тип пользователя в текстовом поле, и проверить его, что-то вроде этого:

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');

но я не знаю, как вызывать эти пользовательские функции (cpf и cnpj) внутри моей другой функции (documentId).

Как я могу это сделать? и как я могу изменить сообщение внутри моей пользовательской проверки?

Спасибо! Ура!

Я разместил свой код в jsbin, если вы хотите посмотреть: http://jsbin.com/ijetex/5/edit

Ответы [ 3 ]

4 голосов
/ 12 сентября 2011

Как насчет этого?

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.");
2 голосов
/ 07 декабря 2012
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");
1 голос
/ 12 сентября 2011

как насчет создания этих функций вне области определения валидации (т.е. без использования анонимных функций)?

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);
//..
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...