2010-01-24 7 views
5

Tengo alguna validación de JavaScript del lado del cliente en un formulario. Funciona muy bien. Pero quiero dar cabida a los usuarios que tienen JavaScript desactivado. Mi validación no se ejecuta desde el atributo onsubmit del formulario, es un controlador de eventos que está vinculado a un botón normal en el formulario. Por lo que el botón que inicia la validación y presente no es en realidad un presente, es sólo de tipo "botón" =:Suprimir enviar evento/botón Enviar habilitado solo si javascript está deshabilitado

<input type="button" value="Ok" class="okbtn"> 

Entonces registrar un controlador de eventos para su evento de clic que hace mi validación. Sostiene si todo pasa:

function clickHandler(event){ 
    thisForm = event.data.caller 
    var valid = submitValidation(thisForm); 
    if (valid == true){ 
     thisForm.submit(); 
    } else{ 
     } 
} 

Mi problema es que si el usuario tiene JS desactivado, no hay manera de enviar el formulario. Podría hacer el botón type="submit", que funcionaría para los usuarios con discapacidad JS, pero luego * siempre enviarán el formulario y omitirán la validación para los usuarios habilitados para JS. (La validación se ejecutará pero se enviará de todos modos). Si hago el botón type="submit", ¿puedo bloquear el evento de envío si se hace clic en él? Estoy usando JQuery, ¿JQuery puede suprimir el envío? Quiero que mi validación controle si se envía.

Respuesta

12

Puede suprimir presentar clics haciendo algo como:

$('input[type=submit]').bind('click', function(e) { 
    e.preventDefault() // prevents the form from being submitted 
    clickHandler(); // the custom submit action 
}); 

O bien, puede suprimir la forma real de presentar la siguiente manera:

$('form').bind('submit', function(e) { 
    e.preventDefault(); 
    // etc 
}); 
+0

sweet. Un cambio de línea :) – Purrell

3

Puede suprimir el envío configurando el controlador onsubmit en el elemento form y, si falla, la validación devuelve false.

Entonces devolvería verdadero si la validación fue exitosa, o falso si falló, en lugar de llamar al thisForm.submit().

3

Cambiar el botón de un botón normal y se unen presentar la comprobación de validación al evento submit() en el formulario.

$("form").submit(function() { 
    if (!submitValidation()) { 
    return false; 
    } 
}); 

A partir de los documentos:

El evento submit se envía a un elemento cuando el usuario está intentando enviar un formulario . Solo se puede adjuntar a los elementos. Las formas pueden ser presentado ya sea haciendo clic en un explícita <input type="submit">, <input type="image">, o <button type="submit">, o pulsando la tecla ENTER cuando determinado elemento tiene el foco.

Cuestiones relacionadas