Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ronaldo Faria Storck Eler

Validação de Telefone no Jquery validate

Recommended Posts

Olá, como converto esse código para o jquery validate:

 

function  checaForm(nomeform) {
// verifica se pelo menos um telefone foi preenchido
if (nomeform.x_telresidencial.value.length == 0) {
	//if (nomeform.x_telresidencial.value.length == 0) {
		if (nomeform.x_telcomercial.value.length == 0) {
			if (nomeform.x_telcelular.value.length == 0) {
				alert("Você deve preencher pelo menos um número de telefone!");
        		nomeform.x_telresidencial.focus();
        		return false;
				}
			else if (nomeform.x_telcelular.value.length < 9) {
				alert("O número do celular não é válido!");
        		nomeform.x_telcelular.focus();
        		return false;
			}
		}
		else if (nomeform.x_telcomercial.value.length < 9) {
			alert("O número do telefone para recado não é válido!");
   			nomeform.x_telcomercial.focus();
   			return false;
		}
	}
	else if (nomeform.x_telresidencial.value.length < 9) {
		alert("O número do telefone comercial não é válido!");
		nomeform.x_telresidencial.focus();
   		return false;
	}
return true;
}

Já tentei verificar assim:

 

				x_telresidencial: {required: function(element) {
											//return $("#x_telcelular").val() < 13;
											//return $("#x_telcelular").is(':empty');
											if ($("#x_telcelular").is(':empty') && $("#x_telcomercial").is(':empty')){
												return true;
											}
											//else if ($("#x_telcomercial").val().length > 0){
											//	return false;
											//}
											else {
												return false;
											}
										}
									},

e nada...

 

sds

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tenho masks simples, se te ajudar:

$(document).ready(function () {
		
		$('#telefone').mask("(99)9999-9999 ? RAMAL:99999");
		$("#data").mask("99/99/9999");  
   		$("#cep").mask("999-99999");  
   		$("#cpf").mask("999.999.999-99");  
   		$("#cnpj").mask("99.999.999/9999-99");  
   		$("#valor").mask("R$9999.99", {completed:function(){alert("You typed the following: "+this.val());}});
   		$("#nome").mask("SR. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
   		$("#empresa").mask("SR. ******************************************************",{placeholder:" "}); 
 
	});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Yuri, obrigado,

 

Também uso este script para fazer as máscaras, o que preciso mesmo é da validação, ou seja, preciso que um telefone seja obrigatório, tipo, se ele preencheu o celular, não precisa do telefone residencial nem do trabalho, ou se preencheu o de trabalho, não preciso do celular e residencial...

 

sds

Compartilhar este post


Link para o post
Compartilhar em outros sites

if (telefone1 != 0) || (telefone2 != 0) || (telefone3 != 0) {

 

return true;

} else {

 

alert("pelo menos um contato deve ser preenchido.");

return false;

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Bergs, obrigado pela resposta, mas ainda não consegui colocar isso dentro do plugin jquery.validate, pois eu preciso que seja obrigatório que um seja preenchido... atualmente valido os telefones via javascript normal, e os demais campos em jquery.validate, por isso quero eliminar a validação separada dos telefones...

 

        rules: {
                x_nome: {required: true},
                x_telresidencial: {required: true},
		x_telcelular: {required: true},
		x_telcomercial: {required: true}
        } 

sds

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, encontrei isso:

 

jQuery.validator.addMethod("require_from_group", function(value, element, options) {
  var numberRequired = options[0];
  var selector = options[1];
  var fields = $(selector, element.form);
  var filled_fields = fields.filter(function() {
    // it's more clear to compare with empty string
    return $(this).val() != ""; 
  });
  var empty_fields = fields.not(filled_fields);
  // we will mark only first empty field as invalid
  if (filled_fields.length < numberRequired && empty_fields[0] == element) {
    return false;
  }
  return true;
// {0} below is the 0th item in the options field
}, jQuery.format("Please fill out at least {0} of these fields."));

e usando assim

 

x_telresidencial: {require_from_group: [1,".requiredFromGroup"]},
x_telcelular: {require_from_group: [1,".requiredFromGroup"]},
x_telcomercial: {require_from_group: [1,".requiredFromGroup"]},

e no campo coloquei a classe: "requiredFromGroup"...

 

Mas o validador passa batido...

 

algo de errado?

 

sds

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, consegui esse método aqui:

 

jQuery.validator.addMethod("require_from_group", function (value, element, options) {
        var numberRequired = options[0];
        var selector = options[1];
        var fields = $(selector, element.form);
        var filled_fields = fields.filter(function () {
            // it's more clear to compare with empty string
            //return $(this).val() != "";
			return $(this).val().length < 9;
        });
        var empty_fields = fields.not(filled_fields);
        // we will mark only first empty field as invalid
        if (filled_fields.length < numberRequired && empty_fields[0] == element) {
            return false;
        }
        return true;
        // {0} below is the 0th item in the options field
    }, jQuery.format("'Please enter either username/ email address to recover password'/Please fill out at least {0} of these fields."));

Aparentemente, funciona, só que, como uso a mascara ele não está funcionando direito (penso que é isso), pois se colocar a máscara fica (__) ____-____, ele considera também como caracteres? como excluir a máscara da contagem de caracteres?

 

 

Ao invés de

 

 

 

return $(this).val() != "";

			

coloquei

return /^\(\d{2}\) \d{4}\-\d{4}?$/.test($(this).val());

e até funciona na hora do submit, no entanto, não valida instataneamente, exemplo, ao sair do campo, se ele estiver ok, os demais já ficam como válidos, e vice-versa...

 

Como fazer isso?

 

----------------------------------------------------------------------------------------------------

 

Bem, aparentemente, resolvido com o código abaixo:

 

 

 

x_telresidencial: {telefoneBR: true, require_from_group: [1,".telefones"]},
x_telcelular: {telefoneBR: true, require_from_group: [1,".telefones"]},
x_telcomercial: {telefoneBR: true, require_from_group: [1,".telefones"]},
jQuery.validator.addMethod("telefoneBR", function(value, element) {
	return this.optional(element) || /^\(\d{2}\) \d{4}\-\d{4}?$/.test(value);
}, "Digite um telefone válido");
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
	//http://stackoverflow.com/questions/1300994/jquery-validate-require-at-least-one-field-in-a-group-to-be-filled
    var numberRequired = options[0];
    var selector = options[1];
    var validOrNot = $(selector, element.form).filter(function() {
         // Each field is kept if it has a value
         return $(this).val();
         // Set to true if there are enough, else to false
      }).length >= numberRequired;

     if(!$(element).data('being_validated')) {
    var fields = $(selector, element.form);
    fields.data('being_validated', true);
    fields.valid();
    fields.data('being_validated', false);
    }
    return validOrNot;
    }, jQuery.format("preencha pelo menos {0} dos campos."));

por algum motivo, quando valido, o campo telcelular fica diferente dos demais, mas isso é uma outra história... obrigado a todos pela contribuição!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.