This course will become read-only in the near future. Tell us at community.p2pu.org if that is a problem.

Revive al botón de enviar



Ya estamos validando nuestros campos utilizando JS! Lo único que nos falta es conectar nuestro botón de enviar con la validación de los campos. Lo que queremos es que el botón esté habilitado solo cuando todos los campos sean válidos.

Recordemos el código original que estabamos utilizando para deshabilitar el botón:

//Esta es una variable. Su valor es true cuando todos los campos 
//son válidos y false cuando hay algún error.
var camposValidos = false;

//En esta variable guardamos el objeto que representa al elemento
//que tenga como ID = boton dentro de nuestro HTML. Asumimos que ese fue
//el ID que se le dio al botón de enviar. 
var botonEnviar = document.getElementById('boton');

if (camposValidos == false) {
    botonEnviar.disabled = true;
}
else {
    botonEnviar.disabled = false;
}


A este código le faltan varias cosas para que haga lo que nosotros necesitamos:

  • Falta que verifique si los campos son válidos o no. Ahora mismo utiliza la variable camposValidos, pero realmente no nos dice mucho esa variable sola.
  • Este código se ejecuta una sola vez, cuando se carga nuestra página. Nosotros queremos que el botón se habilite y deshabilite dinámicamente.
  • Queremos que se verifique si todos los campos son válidos cada vez que modificamos el valor de un campo.

Para lograr nuestro objetivo podemos empezar por modificar este código y convertirlo en una función, como por ejemplo:

function verificarCampos() {
    var botonEnviar = document.getElementById('boton');
            
    if (txtNombre.value != "") {
        botonEnviar.disabled = false;
    }
    else {
        botonEnviar.disabled = true;
    }
}


Esta función por si sola no se ejecutaría, por lo que tenemos que llamarla desde algún punto en nuestro código. Como queremos que los campos se verifiquen (si son válidos o no) cada vez que se modifique un campo vamos a llamar a la función en los eventos onkeyup de nuestros campos. Veamos como quedaría utilizando el nombre:

txtNombre.onkeyup = function() {
    if (txtNombre.value == ""){
        estadoNombre.innerHTML = "El nombre no puede estar en blanco";
        estadoNombre.style.color = "red";
    }
    else {
        estadoNombre.innerHTML = "EL nombre es válido";
        estadoNombre.style.color = "green";
    }
    //Aquí llamamos a la función que verifica los campos para
    //habilitar o deshabilitar el botón de enviar
    verificarCampos();
}

Para completar esta tarea:

  1. Remueve el viejo código para deshabilitar el botón de enviar de tu archivo JS. Reemplazalo con la función verificarCampos.
  2. Modifica la función verificarCampos para que contemple el email y el mensaje. Ahora mismo solo verifica el nombre.
  3. Asegúrate que la función también se llame cuando el email y el mensaje se modifiquen.
  4. Cuando hayas implementado todo tu formulario se debe comportar así. Tu código en validador.js debería verse similar a este.
  5. Añade este código a tu propia página web para tener un formulario de contacto más dinámico!

Task Discussion


  • Alejandro J. ALdama Rubio said:

    ya me salio :) mi error estaba en una de mis etiquetas html. gracias por ayudarme, ahora quiero aprender, como se envia esa info a una base de datos o a un servicio de correo. 

    on July 3, 2012, 12:08 a.m.

    Alexis Hevia said:

    Me alegro que te haya funcionado!

    La funcionalidad de enviar correo la habíamos explicado en un taller anterior. Te recomiendo que visites esta dirección donde podrás encontrar todos los talleres en el orden en el que los planificamos: https://p2pu.org/es/schools/school-of-webcraft/sets/crea-tu-primera-pagina-web/

    La parte de enviar correo está en el taller #13

    on July 3, 2012, 12:23 a.m. in reply to Alejandro J. ALdama Rubio
  • Alejandro J. ALdama Rubio said:

    ya en la ultima parte del formulario, no me sale, hacer la función de que el botón se habilite cuando los campos, esten llenos.

     

    este es mi codigo, que esta mal 

    function verificarCampos() {

        var botonEnviar = document.getElementById('boton');
        
        if (txtNombre.value != "" && txtMail.value != "") {
            botonEnviar.disabled = false;
        }
        else {
            botonEnviar.disabled = true;
        }
    }
    on July 1, 2012, 3:51 p.m.

    Rogelio Moreno said:

    Hola!

    Si todo lo demás te funciona bien, revisa que estes llamando la función verificarCampos() en algún punto.

    on July 1, 2012, 7:25 p.m. in reply to Alejandro J. ALdama Rubio

    Alexis Hevia said:

    Yo te recomendaría 2 cosas:

    1) Asegúrate que no tengas errores en el código. Para esto debes entrar a la consola de Javascript y asegurarte que no aparezca ningún mensaje de error. En Google Chrome puedes entrar con F12 y en Firefox debes instalar el plugin Firebug.

    2) Desde la consola de Javascript, corre la función verificarCampos(). Si te funciona, significa que la función está bien y solo te falta llamarla desde algún lugar en tu código.

    on July 2, 2012, 2:54 p.m. in reply to Alejandro J. ALdama Rubio

    Alejandro J. ALdama Rubio said:

    muchas gracias por sus respuesta, ya hice lo de la consola, cuando tecleo verificarcampos(); me aparece undefined. 

    on July 2, 2012, 8:27 p.m. in reply to Alexis Hevia

    Alexis Hevia said:

    Sí eso es normal. Lo que quería que probaras era si la función estaba trabajando bien. Es decir, si llenas los campos y corres la función verificarCampos() desde la consola, se activa el botón de enviar?

    Si luego borras los datos de un campo y vuelves a correr verificarCampos() se desactiva el botón de enviar?

    Si quieres puedes compartir tu código con nosotros - no sólo la función verificarCampos() sino todo el proyecto - así te podemos ayudar a encontrar el problema. Puedes usar algún sitio como Github para subirlo.

    on July 2, 2012, 11:15 p.m. in reply to Alejandro J. ALdama Rubio