Hice un formulario que funciona con jQuery, el botón de envío está deshabilitado mientras que todos los selectores no tienen valores.

Pero no funciona = /, cuando todos los selectores tienen valores, el botón enviar aún está deshabilitado. por favor ayúdame a encontrar lo que está mal.

Violín

Js:

(function() {
    $('.form-valid').keyup(function() {

        var empty = false;
        $('.form-valid').each(function() {
            if ($(this).val() == '') {
                empty = true;
            }
        });

        if (empty) {
            $('#register').attr('disabled', 'disabled');
        } else {
            $('#register').removeAttr('disabled');
        }
    });
})
1
Jack Neth 14 dic. 2016 a las 16:56

2 respuestas

La mejor respuesta

Tuviste dos problemas:

  1. Tu documento listo no era técnicamente correcto.
  2. Estabas viendo keyup en elementos select. Normalmente no tienen un evento de keyup, sino un evento de change.

Aquí hay un violín de trabajo actualizado: http://jsfiddle.net/cale_b/rgs7soaa/1/

Y aquí está el código actualizado:

// Corrected the jQuery document ready.
// Originally: (function() {
jQuery(function($) {
    // Changed this from "keyup" to "change"
    $('.form-valid').change(function() {
        var empty = false;
        $('.form-valid').each(function() {
            if ($(this).val() == '') {
                empty = true;
            }
        });

        if (empty) {
            $('#register').attr('disabled', 'disabled');
        } else {
            $('#register').removeAttr('disabled');
        }
    });
})
0
random_user_name 14 dic. 2016 a las 14:00

Debe utilizar .change en lugar de .keyup para la etiqueta de selección:

$('.form-valid').change(function() {
    var empty = false;
    $('.form-valid').each(function() {
        if ($(this).val() == '') {
            empty = true;
        }
    });

    if (empty) {
        $('#register').attr('disabled', 'disabled');
    } else {
        $('#register').removeAttr('disabled');
    }
});
0
jean-max 14 dic. 2016 a las 14:06