Desactivar o Activar botón en formulario con JQUERY y Validate

Cuando validamos un formulario usando JQUERY y el plugin VALIDATE quizás necesitemos que el botón de ENVIAR esté desactivado hasta que el formulario esté completo y valide correctamente. Lo podemos lograr con el siguiente script:

<script type="text/javascript">

$('#formulario').bind('change keyup', function() {

    if($(this).validate().checkForm()) {

        $('#boton_enviar').attr('disabled', false);

    } else {

        $('#boton_enviar').attr('disabled', true);

    } });

</script>

 

Recuerden reemplazar #formulario por la ID de su formulario  y #boton_enviar por la ID de su botón.

 

 

sobre campos obligatorios en formularios

Hoy, trabajando con formularios, se me presentó la siguiente duda:

¿Qué será mejor para el usuario a la hora de avisar que determinador campos de un formulario son obligatorios?

¿ un asterisco al lado de cada campo, y luego una leyenda? ¿aclarar diréctamente que el campo es obligatorio?

 

Investigando sobre usabilidad de formularios, encontré esto:

“Diferenciar, en los formularios, los campos opcionales de los obligatorios, sin hacer pensar al usuario.”

Digo, no está mal el asterisco,  es una solución bien formal al problema de los campos requeridos. Pero decirle directamente al usuario “este campo es requerido, llenalo.”  sea aún más usable, amable y claro.
Lo sé, la diferencia es mínima.

y los sitios grandes que usan?  veamos:

Facebook:   Nada.  Avisa al enviar el formulario.
Google:  Lo mismo.  Avisa solo al enviar el formulario.
Twitter:  nada.  acompaña al usuario en cada paso del formulario usando foco. avisa si algo anda mal al enviar.
Taringa:  igual que Twitter.

 

Sorprendente hallazgo.  Ninguno de estos cuatro gigantes de la web avisa, ni con asteriscos ni con palabras, qué campos son obligatorios.  Imagino que por una simple razón:  TODOS los campos que obligan a llenar son obligatorios, porque no tiene sentido ofrecer campos no obligatorios. Llenar formularios es fastidioso, cuanto menos molestar al usuario, mejor.