Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia.
estou desenvolvendo um sistema para verificar um email cadastrado mas o return false não funciona.
$(function(){
$("#form").submit(function() {
var email = $('#email').val();
$.post("buscar.php", {email: ""+email+""}, function(data) {
if(data == 1){
return false;
$("#error").html(" este email já esta cadastrado");
}
});
});
});
<form action="enviar.php" method="post" id="form">
<input type="text" name="email" id="email" />
<p id="error"></p>
<input type="submit" value="cadastrar" id="botao" name="verificar">
</form>Isso mesmo.
Quando você faz o "$.post()" o javascript inicia uma requisição assíncrona e continua a executar o comando "$("#form").submit()", com isso ele realiza o submit e depois disso volta o resultado do post que retorna false.
O que você poderia fazer é deixar o botão desabilitado e no evento onblur do text, fazer a validação do email com o $.post(), se o resultado for de que o email não existe aí você habilita o botão de submit
Mais ou menos assim como os amigos acima citou:
O FORMULÁRIO:
<form id="meu-form" action="sua_pagina.php" method="post">
<label>E-mail
<input type="email" name="email" id="email" onblur="verificaUserCad()" placeholder="Digite o e-mail">
</label>
<span id="respUser"></span>
<button type="submit" disabled>Cadastrar</button>
</form>
**JAVASCRIPT:**
function verificaUserCad(){
var user = $("#email").val();
if(user == ''){
$("#respUser").html('<p>Campo em branco!</p>');
}else{
$("#respUser").html('<small>Estamos verificando disponibilidade...</small>');
$.ajax({
url: 'sua_pagina.php',
type: 'post',
data: {email: email}, // como sua página PHP vai receber o POST
success: function (result){
if(result == 1){
$("#respUser").html('<small>Já existe um usuário com <b>'+ user +'</b></small>');
$("#buttonCadastrar").attr('disabled' , 'disabled');
}else{
$("#buttonCadastrar").removeAttr('disabled');
$("#respUser").html('<small>Nome de usuário disponível</small>');
}
}
})
}
}
Você precisa decidir se utiliza ajax ou o fluxo normal do formulário.
Eu montei algo aqui, com jquery ajax, veja se saca a idéia.
Eu utilizei essa api só pra simular uma requisição.
Obviamente como você vai enviar um POST os dados do seu ajax serão diferentes - http://devdocs.io/jquery/jquery.ajax