Ir para conteúdo

Arquivado

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

Monkey D. Luffy

[Resolvido] Validação em pagina form carrego em div via ajax

Recommended Posts

Desculpem minha insistencia, mas tentando resolver esse problema fiz o seguinte:

 

adicionei essa rotina de validação dentro de uma função chamada valida() e tb adicionei um alert antes de executar todo o resto e chamei essa função valida apos o .live('click') que é uma outra rotina responsavel por enviar a pagina

 

porem o que acontece é o seguinte quando eu clico em enviar, independente de estar preenchido ou não o formulario é enviado e a validação é ignorada porem o alert é acionado.... fiz isso para tirar minhas duvidas... agora?

o que esta acontecendo? rsrsrs

 

como impedir que o formulario seja submetido se estive sem preenchimento?

 

function valida(){

alert(0);
//validação do formulario comentadio
$(document).ready( function() {

           $("#form_comentario").validate({
               // Define as regras
               rules:{
           "nome":{
               // campoNome será obrigatório (required) e terá tamanho mínimo (minLength)
                       required: true, minlength: 5
                   },
                   "msg":{
                       // campoMensagem será obrigatório (required) e terá tamanho mínimo (minLength)
                       required: true, minlength: 2
                   }
               },
               // Define as mensagens de erro para cada regra
               messages:{
                   "nome":{
                       required: "Digite o seu nome",
                       minlength: "O seu nome deve conter, no mínimo, 2 caracteres"
                   },
                   "msg":{
                   required: "Digite a sua mensagem",
               minlength: "A sua mensagem deve conter, no mínimo, 2 caracteres"
                   }
               }
           });
       });

}

//Função mural de recados
$(function(){

       $('.btn').live('click', function(){

       valida()
               var nome = $('#nome').val();
               var msg = $('#msg').val();

               $(".formulario_comentario").html('<span id="spanEnviandoComentario"><img src="imagens/loader.gif" alt="" /></span>');

               $.post('cadastra_comentario.php', {

                       nome_post: nome,
                       msg_post: msg,

               }, function(res_cadastra){                      
                       $(".formulario_comentario").html(res_cadastra);

                       $.post('atualiza_comentario.php', function(atualiza_comentarios){                       
                               $("#comentarios ul").html(atualiza_comentarios);                        
                       });

               });

               return false;   

       });


});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara no formulário tem ação tipo:

<form onsubmit="valida();">

 

Se não tiver coloque e faça isto em seu code pra ver se dá certo

 

function valida(){

alert("O FORMULÁRIO FOI SUBMETIDO");
//validação do formulario comentadio


           $("#form_comentario").validate({
               // Define as regras
               rules:{
           "nome":{
               // campoNome será obrigatório (required) e terá tamanho mínimo (minLength)
                       required: true, minlength: 5
                   },
                   "msg":{
                       // campoMensagem será obrigatório (required) e terá tamanho mínimo (minLength)
                       required: true, minlength: 2
                   }
               },
               // Define as mensagens de erro para cada regra
               messages:{
                   "nome":{
                       required: "Digite o seu nome",
                       minlength: "O seu nome deve conter, no mínimo, 2 caracteres"
                   },
                   "msg":{
                   required: "Digite a sua mensagem",
               minlength: "A sua mensagem deve conter, no mínimo, 2 caracteres"
                   }
               }
           });

}

//Função mural de recados
$(document).ready( function() {

       $('.btn').live('click', function(){

       valida()
               var nome = $('#nome').val();
               var msg = $('#msg').val();

               $(".formulario_comentario").html('<span id="spanEnviandoComentario"><img src="imagens/loader.gif" alt="" /></span>');

               $.post('cadastra_comentario.php', {

                       nome_post: nome,
                       msg_post: msg,

               }, function(res_cadastra){                      
                       $(".formulario_comentario").html(res_cadastra);

                       $.post('atualiza_comentario.php', function(atualiza_comentarios){                       
                               $("#comentarios ul").html(atualiza_comentarios);                        
                       });

               });

               return false;   

       });


});

 

Qualquer coisa grita aê mano

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal eu estou quase conseguindo , o código estava assim

 


//validação do formulario comentadio
$(document).ready( function() {

    $("#form_comentario").validate({
        // Define as regras
        rules:{
           "nome":{
               // campoNome será obrigatório (required) e terá tamanho mínimo (minLength)
                required: true, minlength: 5
            },
            "msg":{
                // campoMensagem será obrigatório (required) e terá tamanho mínimo (minLength)
                required: true, minlength: 2
            }
        },
        // Define as mensagens de erro para cada regra
        messages:{
            "nome":{
                required: "Digite o seu nome",
                minlength: "O seu nome deve conter, no mínimo, 2 caracteres"
            },
            "msg":{
            required: "Digite a sua mensagem",
               minlength: "A sua mensagem deve conter, no mínimo, 2 caracteres"
            }
        }
    });
});


//Função mural de recados
$(function(){

$('.btn').live('click', function(){

valida()
	var nome = $('#nome').val();
	var msg = $('#msg').val();

	$(".formulario_comentario").html('<span id="spanEnviandoComentario"><img src="imagens/loader.gif" alt="" /></span>');

	$.post('cadastra_comentario.php', {

		nome_post: nome,
		msg_post: msg,

	}, function(res_cadastra){			
		$(".formulario_comentario").html(res_cadastra);

		$.post('atualiza_comentario.php', function(atualiza_comentarios){			
			$("#comentarios ul").html(atualiza_comentarios);			
		});

	});

	return false;	

});


});

 

primeiro eu clico no botão e valida se tiver tudo ok ele executa essa segunda função mas dessa forma que ai de cima não funcionava pois eu carrego as pagina com ajax...

 

ai eu fiz o seguinte:

 


//validação do formulario comentadio
$('.btn').live('click', function(){

    $("#form_comentario").validate({
        // Define as regras
        rules:{
           "nome":{
               // campoNome será obrigatório (required) e terá tamanho mínimo (minLength)
                required: true, minlength: 5
            },
            "msg":{
                // campoMensagem será obrigatório (required) e terá tamanho mínimo (minLength)
                required: true, minlength: 2
            }
        },
        // Define as mensagens de erro para cada regra
        messages:{
            "nome":{
                required: "Digite o seu nome",
                minlength: "O seu nome deve conter, no mínimo, 2 caracteres"
            },
            "msg":{
            required: "Digite a sua mensagem",
               minlength: "A sua mensagem deve conter, no mínimo, 2 caracteres"
            }
        }
    });		

//Função mural de recados
$('.btn').click(function(){

	var nome = $('#nome').val();
	var msg = $('#msg').val();

	$(".formulario_comentario").html('<span id="spanEnviandoComentario"><img src="imagens/loader.gif" alt="" /></span>');

	$.post('cadastra_comentario.php', {

		nome_post: nome,
		msg_post: msg,

	}, function(res_cadastra){			
		$(".formulario_comentario").html(res_cadastra);

		$.post('atualiza_comentario.php', function(atualiza_comentarios){			
			$("#comentarios ul").html(atualiza_comentarios);			
		});

	});

	return false;	

});
});

 

mudei a validação ao invez do $(document).ready eu usei o live

 

e joguei a 2 função dentro dentro da primeira.

Então ela quase funciona porém so tem um probleminha...

Se eu clicar no botão e estiver vazio ele valida e não envia o formulario.. ate ai beleza né, ai se eu digito algo nelas ela envia o formulario e ai tudo bonitooo mass o seguinte se eu clicar e estiver vazio e tornar a clicar novamente ele não faz a validação e envia o form mesmo sem dados... o que eu faço para mesmo que se o usuario clicar mais de uma vez ele der certo??

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso aqui:

$('.btn').live('click', function(){

           $("#form_comentario").validate({

está errado.

 

deixe apenas:

$("#form_comentario").validate({

para usar plugins com ajax, leia:

 

http://wbruno.com.br/2011/08/22/usando-lightbox-em-pagina-carregada-ajax/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa é a forma correta.

 

Leia o link que postei. Lá eu explico como fazer um plugin funcionar em uma página carregada com ajax.

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo Wilian, mas eu tenho 2 funções e uma delas submetem o form como eu faria para que a que a segunda so submetesse caso todos campos fossem validados?

 

seria uma dentro da outra como fiz?

 

//validação do formulario comentadio
$('.btn').live('click', function(){

    $("#form_comentario").validate({

    	submitHandler: function(form) {
  		 $(form).submit(function(){

  		 //Função mural de recados
      		 var nome = $('#nome').val();
	 var msg = $('#msg').val();

	$(".formulario_comentario").html('<span id="spanEnviandoComentario"><img src="imagens/loader.gif" alt="" /></span>');

	$.post('cadastra_comentario.php', {

		nome_post: nome,
		msg_post: msg,

	}, function(res_cadastra){			
		$(".formulario_comentario").html(res_cadastra);

		$.post('atualiza_comentario.php', function(atualiza_comentarios){			
			$("#comentarios ul").html(atualiza_comentarios);			
		});

	});

	return false;
       	return flase;
   		});
 		  },

        // Define as regras
        rules:{
           "nome":{
               // campoNome será obrigatório (required) e terá tamanho mínimo (minLength)
                required: true, minlength: 5
            },
            "msg":{
                // campoMensagem será obrigatório (required) e terá tamanho mínimo (minLength)
                required: true, minlength: 2
            }
        },
        // Define as mensagens de erro para cada regra
        messages:{
            "nome":{
                required: "Digite o seu nome",
                minlength: "O seu nome deve conter, no mínimo, 2 caracteres"
            },
            "msg":{
            required: "Digite a sua mensagem",
               minlength: "A sua mensagem deve conter, no mínimo, 2 caracteres"
            }
        }
    });	    

});

 

ou teria que ser fora?

 

acesse: http://jeferson.lucianocasale.com/principal.php

 

e vai no menu comente....

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá errado tb cara.. você ta colocando uma função dentro da outra.

 

Basta isso aqui:

http://wbruno.com.br/2011/03/21/validar-enviar-formulario-ajax-usando-jquery-validate/

 

 

e para ativar o plugin na página carregada com ajax, é só seguir isso:

http://wbruno.com.br/2011/08/22/usando-lightbox-em-pagina-carregada-ajax/

 

 

Esquece o .live(), e esquece o .submit(), já que você tá usando o .validate(), você não precisa desses 2.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, mas realmente não estou conseguindo fazer esse esquema que você fez com o ligthbox para o validate.. no caso tenho que deixar a rotina do validate e depois criar uma segunda fazendo aquele esquema que você fez?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Mostre qual o código que você usa para carregar as páginas com ajax.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Mostre qual o código que você usa para carregar as páginas com ajax.

 

 

 

function abrirPag(valor){
var url = valor;

xmlRequest.open("GET",url,true);
xmlRequest.onreadystatechange = conteudo_mostrar;
xmlRequest.send(null);

if (xmlRequest.readyState == 1) {
document.getElementById("conteudo_mostrar").innerHTML = "<div id='preload'><img src='imagens/loader.gif'></div>";
}

return url;
}

function conteudo_mostrar(){
if (xmlRequest.readyState == 4){
document.getElementById("conteudo_mostrar").innerHTML = xmlRequest.responseText; 


}
}

 

ja tentei carregar utilizando o jquery porem me deu uns problemas tb na hora de chamar outras paginas :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui neste instante:

 

document.getElementById("conteudo_mostrar").innerHTML = xmlRequest.responseText; 

é qndo você insere a resposta do ajax no dom.

 

Basta depois disso invocar o teu validate(), caso esteja na página do formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui neste instante:

 

document.getElementById("conteudo_mostrar").innerHTML = xmlRequest.responseText; 

é qndo você insere a resposta do ajax no dom.

 

Basta depois disso invocar o teu validate(), caso esteja na página do formulário.

 

tipo isso é algo generico que uso para todas paginas.. não ira influenciar em nada nas outras?

 

de uma olhada aqui : www.jeferson.lucianocasale.com/principal.php

acesse o menu comente so para você ter uma ideia de como esta

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, por isso você tem q fazer o que eu disse:

 

invocar o teu validate(), caso esteja na página do formulário.

ou seja, um if() para saber se vai carregar o form. E se for, então ativar o validate()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara de verdade que surra que eu estou levando disso.. acho que estou mais confuso ainda :/

 

ou seja agora nem sei por onde começar kkkk

 

estou tentando entender como posso usar aqueel esquema que você fez =/ mas não consigo rsrss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então para de olhar para esse código, e dá uma estudada em javascript e ajax. Isoladamente.

 

Não tem outra saída. A solução para o seu problema eu já disse qual é. Mas você precisa entender para usá-la.

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.