entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

validar checkboxes javascript

buenas tardes tengo una duda como puedo hacer para validar con javascript ,si un un grupo de checkbox no esta checado y me muestre una alerta
si falta checar algun grupo y si no falta me deje seguir llenando...

<input type="checkbox" name="trans[]" value="Bike">bike<br>
<input type="checkbox" name="trans[]" value="Car"> car 

<input type="checkbox" name="deporte[]" value="soccer">soccer<br>
<input type="checkbox" name="deporte[]" value="Car"> baquetball 

2 Respuestas

-1voto

white Puntos75880

intenta con esta función:

function validate_checkboxes()
{
    var inputs = document.getElementsByTagName('input'),
        unmarked = {},
        errors = [];

    [].forEach.call(inputs, function(checkbox)
    {
        var name = checkbox.getAttribute('name'),
            type = checkbox.getAttribute('type');

        if(type !== 'checkbox')
            return;

        if( !checkbox.checked )
        {
            if(!unmarked[name])
                unmarked[name] = [];

            unmarked[name].push(checkbox);
        }
    });

    for(name in unmarked)
    {
        var count = unmarked[name].length,
            group_name = name.replace('[]', '');

        errors.push('te falta marcar %1 campo%2 en el grupo %3%4'.replace(/\%(\d)/g, function(str, format)
        {
            return [
                count,
                count > 1 ? 's' : '',
                group_name,
                "\n"
            ][format-1];
        }));
    }

    if(errors.length)
    {
        // alert(errors.join("\n"));

        document
        .getElementById('errors')
        .innerHTML = errors.join('<br>');

        document
        .getElementById('errors')
        .style.display = 'block';
    }
    else
    {
        document
        .getElementById('errors')
        .style.display = 'none';
    }

    return !!!errors.length;
}

http://jsfiddle.net/2L02sxkt/1/

0voto

pedrourday Puntos3330

Es un poco tarde para responder pero igual te respondo. Es mucho más sencillo abordar el problema usando la programación funcional. Esta es una solución más sencilla de entender:

/* esta función devuelve falso si algun grupo de checkbox
no tiene algun checkbox seleccionado y verdadero en caso contrario.*/

function validar_checkboxes() {

  /* recorro todos los checkbox y creo un arreglo asociativo en el que
cada elemento tiene una clave que es el nombre del grupo y un valor booleano
que indica si todos los checkbox de ese grupo están seleccionados.*/

  var cb_grp = [].reduce.call(
    document.querySelectorAll('input[type="checkbox"][name]'),
    function(res, el) {

    /* aplico la operación lógica de disyunción a cada grupo con
cada elemento de ese grupo utilizando la propiedad "checked" de cada elemento.*/

    res[el.name] = res[el.name] || el.checked;

    /* retorno el arreglo asociativo cambiado.*/
    return res;

  }, {});

  /* recorro el arreglo asociativo anterior.*/
  for (var i in cb_grp) {

    /* Si se encuentra un elemento con valor falso, significa que algún grupo
no tiene algún checkbox seleccionado y por consiguiente
la función devuelve falso.*/

    if (!cb_grp[i]) {
      return false;
    }
  }

  /* Caso contrario, significa que todos los grupos tienen
al menos algún checkbox seleccionado y se puede continuar, entonces
la función devuelve verdadero.*/

  return true;
}

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta