Foros del Web » Programando para Internet » Jquery »

Activar botón de formulario si la consulta ajax fue exitosa

Estas en el tema de Activar botón de formulario si la consulta ajax fue exitosa en el foro de Jquery en Foros del Web. Que tal, este es mi primer tema y espero me puedan ayudar. La cuestión es la siguiente: tengo un formulario con 4 campos, uno de ...
  #1 (permalink)  
Antiguo 05/06/2015, 13:54
 
Fecha de Ingreso: junio-2015
Mensajes: 6
Antigüedad: 8 años, 10 meses
Puntos: 0
Pregunta Activar botón de formulario si la consulta ajax fue exitosa

Que tal, este es mi primer tema y espero me puedan ayudar. La cuestión es la siguiente: tengo un formulario con 4 campos, uno de esos campos hace una comprobación a la base de datos para determinar si el dato introducido es correcto (son códigos de 6 dígitos), lo que busco es que si el código introducido no se encuentra la base de datos el botón del formulario se mantenga desactivado, puesto que debería estar desactivado hasta completar el formulario y que obviamente el código sea correcto.

Este es el código que uso para la consulta:

Código:
<script type="text/javascript">
$(document).ready(function() {
	$("input#Enviar").attr('disabled', 'disabled'); 
    $('#username').blur(function(){

        $('#Info').html('<img src="images/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);
            }
        });
    });              
});    
</script>
Y este el archivo php que la realiza:

Código:
if($_REQUEST) {
    $username = $_REQUEST['username'];
mysql_select_db($database_ShalottBD, $ShalottBD);
$query = "SELECT * FROM UsuariosPrimaNocte WHERE IDcodigo = '".strtolower($username)."'";
    $results = mysql_query($query) or die('ok');

    if(mysql_num_rows(@$results) > 0)
        echo '<div id="Error" style="margin:3px;">Código correcto</div>';
	else
        echo '<div id="Success" style="margin:3px;">Código incorrecto</div>';
}
  #2 (permalink)  
Antiguo 05/06/2015, 15:27
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: Activar botón de formulario si la consulta ajax fue exitosa

Bienvenido a FDW.

Podrías enviar un código de error o de éxito —según sea el caso— junto al <div> con el mensaje y según sea el código que recibas en el método $.ajax, muestras o mantienes oculto al botón de envío.

Código Javascript:
Ver original
  1. $.ajax({
  2.     type: "POST",
  3.     url: "check_username_availablity.php",
  4.     data: dataString,
  5.     dataType: "JSON", //Para poder recibir la respuesta como objeto JSON
  6.     success: function(data){
  7.         $('#Info').fadeIn(1000).html(data.mensaje);
  8.  
  9.         if (data.codigo == 1){ //Si el código es 1
  10.             $("[type=submit]").prop("disabled", false);
  11.         }
  12.     }
  13. });

Código PHP:
Ver original
  1. if(mysql_num_rows($results) > 0)
  2.     $respuesta = array('codigo' => 1, 'mensaje' => '<div id="Error" style="margin:3px;">Código correcto</div>');
  3. else
  4.     $respuesta = array('codigo' => 0, 'mensaje' => '<div id="Success" style="margin:3px;">Código incorrecto</div>');
  5.  
  6. echo json_encode($respuesta); //Envío el array como objeto JSON para poder leer sus propiedades

Solo como un consejo, no uses los @ en el código PHP. Lo único que lograrás conseguir es ocultar los mensajes de error y sin ellos te será imposible depurar el código.

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 05/06/2015, 21:55
 
Fecha de Ingreso: junio-2015
Mensajes: 6
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Activar botón de formulario si la consulta ajax fue exitosa

Mil gracias Alexis88, revise tu code pero lamentablemente no me dio resultados, seguramente por una mala implementación, el div que tengo donde se muestra el mensaje de "código correcto" o "código incorrecto" dejo de mostrar resultados y el input sigue activo, no sé que pueda ser
  #4 (permalink)  
Antiguo 05/06/2015, 22:58
 
Fecha de Ingreso: junio-2015
Mensajes: 6
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Activar botón de formulario si la consulta ajax fue exitosa

Alexis88 ya revise con más calma y en efecto logre implementarlo correctamente, sólo que cambie el disabled por un display none, que al validar muestra ya el botón de submit y además también cambie el script para mostrar u ocultar dependiendo si se modifique o no el input del código, lo adjunto:

Código:
<script type="text/javascript">
$(document).ready(function() {
    $('#username').blur(function(){

        $('#Info').html('<img src="images/loader.gif" alt="" />').fadeOut(1000);

        var username = $(this).val();	
        var dataString = 'username='+username;

        $.ajax({
            type: "POST",
            url: "check_username_availablity.php",
            data: dataString,
			dataType:"JSON",
            success: function(data) {
                $('#Info').fadeIn(1000).html(data.mensaje);
				
				if (data.codigo == 1){
				document.getElementById("Enviar").style.display='inline-block';	
				} else {
				document.getElementById("Enviar").style.display='none';
				}
			}
        });
    });              
});    
</script>
Mil gracias Alexis88, sobre lo del @, la verdad es que el script no es mío, lo encontré por ahí navegando, me hace falta mucho por aprender sobre php, Ajax y ahora hasta JSON que no tengo ni idea realmente de su funcionamiento, pero me has salvado la vida de momento, muchas gracias!!

Etiquetas: javascript, php+ajax+formularios
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 12:46.