Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Validar antes de Enviar Formulario

Estas en el tema de Validar antes de Enviar Formulario en el foro de Jquery en Foros del Web. Buenas a todos, Agradezco que me puedan apoyar con mi consulta; Necesito validar un formulario con ajax, php y mysql... conseguí un ejemplo en la ...
  #1 (permalink)  
Antiguo 25/05/2015, 11:04
 
Fecha de Ingreso: marzo-2014
Mensajes: 21
Antigüedad: 10 años, 1 mes
Puntos: 0
Validar antes de Enviar Formulario

Buenas a todos,
Agradezco que me puedan apoyar con mi consulta;
Necesito validar un formulario con ajax, php y mysql... conseguí un ejemplo en la web que hace 90% lo que quiero, pero por ultimo deseo que deshabilite en botón de envió si la información ya existe en la base de datos, es decir; si el ajax dice que el usuario ya existe y que se habilite el envio si no exiten usuarios iguales.

Codigo del index
Código PHP:
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<link href="css.css" media="screen" rel="stylesheet" type="text/css" />
<script type="text/javascript">
$(document).ready(function() {    
    $('#username').blur(function(){
        
        $('#Info').html('<img src="loader.gif" alt="" />').fadeOut(1000);

        var username = $(this).val();        
        var dataString = 'username='+username;
        
        $.ajax({
            type: "POST",
            url: "check_username_availablity.php",
            data: dataString,
            success: function(data) {
                $('#Info').fadeIn(1000).html(data);
                //alert(data);
            }
        });
    });              
}); 
</script>

</head>
<?php
include('dbcon.php');?>
<body>
<h1>Live Username Availability Checking using jQuery Ajax and PHP. </h1>

<br clear="all" />

<form action="index3.php" name="customForm" id="customForm" method="post" onsubmit="return false" enctype="multipart/form-data">

    <div class="both">
        <h4> Elige "jose" o "maria" siendo usuarios que ya existen en base de datos </h4><br clear="all" /><br clear="all" />
        <br clear="all" />
        <div>
            <label>Nombre de usuario</label>
            <input id="username" name="username" type="text" value="" required />
            <div id="Info"></div>
            
            <label>Contraseña</label>
            <input id="password" name="password" type="password" value="" required />
            <input type="submit" name="send" id="send" value="Enviar"
        </div>
    </div>
    
    <br clear="all" />
    
</form>

y por aquí la consulta a la base de datos;
Código PHP:
<?php
sleep
(1);
include(
'dbcon.php');
if(
$_REQUEST)
{
    
$username     $_REQUEST['username'];
    
$query "select * from username_availablity where username = '".strtolower($username)."'";
    
$results mysql_query$query) or die('ok');
    
    if(
mysql_num_rows(@$results) > 0// not available
    
{
        echo 
'<div id="Error">Usuario ya existente</div>';
    }
    else
    {
        echo 
'<div id="Success">Disponible</div>';
    }
    
}
?>
Agradezco su amable ayuda, gracias.
  #2 (permalink)  
Antiguo 25/05/2015, 11:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Validar antes de Enviar Formulario

Podrías enviar un objeto con el mensaje y un código que te indique si el usuario existe o no.

Código PHP:
Ver original
  1. if (mysql_num_rows($results) > 0){
  2.     echo json_encode(array('codigo' => 1, 'mensaje' => '<div id="Error">Usuario ya existente</div>'));
  3. }
  4. else{
  5.     echo json_encode(array('codigo' => 2, 'mensaje' => '<div id="Success">Disponible</div>'));
  6. }

Y en el método success:

Código Javascript:
Ver original
  1. success: function(data){
  2.     if (data.codigo === 1){ //Si el código recibido es 1, oculto el botón de envío
  3.         $("#send").hide();
  4.     }
  5.     $('#Info').fadeIn(1000).html(data.mensaje); //Añado el mensaje
  6. }

Y solo te faltaría añadir el atributo dataType al método $.ajax con el valor json ya que lo que recibes es un objeto JSON por parte del archivo PHP.

Código Javascript:
Ver original
  1. dataType: "json"

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 25/05/2015, 11:57
 
Fecha de Ingreso: marzo-2014
Mensajes: 21
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Validar antes de Enviar Formulario

Buenas, Gracias por tu respuesta...... hice los cambios que mencionas, pero cuando el campo existe lo desabilita pero así lo deja, que se haría para volverlo habilitar cuando el usuario este disponible? en ese caso?
Agradezco tu tiempo.
  #4 (permalink)  
Antiguo 25/05/2015, 11:59
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Validar antes de Enviar Formulario

Fíjate que usé una condición. Cuando el código es 1, se oculta el botón. Creo que es obvio lo que necesitas hacer para volver a mostrarlo.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 25/05/2015, 13:37
 
Fecha de Ingreso: marzo-2014
Mensajes: 21
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Validar antes de Enviar Formulario

Muchas gracias por la ayuda me sirvió mucho , y se que era algo elemental pero no manejo ajax. Estoy investigando para saber trabajarlo ya que es una muy buena herramienta para la implementación con base de datos.
Para los que desconocen como me paso le falta este código:

Código PHP:
success: function(data) {
                if (
data.codigo === 1){
                $(
"#send").hide();
                }
                else {
                $(
"#send").show();
                }
                $(
'#Info').fadeIn(1000).html(data.mensaje);
                
//alert(data);
            


Etiquetas: ajax, formulario, html, input, javascript, js, php, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:34.