2010-05-07 18 views
8

Quiero deshabilitar el botón de enviar cuando un usuario envía el formulario para que no haga clic dos veces en el botón de enviar.cómo desactivo el botón de enviar cuando el formulario se envía sin ningún error

Así que codifica la siguiente javascript en mi página

 

$(document).ready(function(){ 
    $("form").submit(function(){ 
     $("form").find('input[type=submit]').attr('disabled', 'disabled'); 
    }); 
}) 
 

Esto funciona muy bien. Pero cuando solicité la biblioteca jQuery validar y se añade el siguiente código

 

$(document).ready(function(){ 
    $("form").submit(function(){ 
     $("form").find('input[type=submit]').attr('disabled', 'disabled'); 
    }); 

    $("form").validate({ 
      errorClass: "jqueryError", 
      errorElement: 'label', 
      success: 'jqueryValid', 
      messages: { 
       TopicCategory: { 
        required: 'Please choose a category for topic.' 
       }, 
       TopicSubcategoryId: { 
        required: 'Please choose a subcategory for topic.' 
       }, 
       TopicTitle: { 
        required: 'Please enter a title for topic.' 
       } 
      } 
     }); 
}) 
 

El botón de enviar obtuve desactivado después de la presentación del modelo, incluso si hay entradas incompletas en la página web (es decir, la forma de errores y el usuario se le pide que rellene correctamente)
y cuando el usuario completa el formulario corrigiendo todos los errores, el botón de enviar está deshabilitado.

¿Cómo verifico primero si no hay errores en el formulario y luego deshabilito el botón de enviar y luego lo presento finalmente?

Gracias

Respuesta

7

Añadir el siguiente parámetro a jQuery Validar:

submitHandler: function(form) { 
    $(':submit', form).attr('disabled', 'disabled'); 
    form.submit(); 
} 
+1

Gracias, eso funcionó perfectamente. ¿Puedes explicar la segunda línea de código, por favor? ¿Es igual a $ ("formulario"). Find ("entrada [tipo = enviar]") attr ("deshabilitado", "deshabilitado"); ? ¿cuál es más rápido? –

+0

El mío es probablemente un poco más rápido. Utilizo [el selector ': submit'] (http://api.jquery.com/submit-selector/), y la variante de la función' $ 'que toma un elemento para buscar. – SLaks

+0

gracias de nuevo por proporcionar el enlace y respuesta rápida :-) –

-1

No he comenzado aún con jQuery. Pero creo, se puede hacer algo como esto:

$(document).ready(function(){ 
    $("form").submit(function(){ 
    }); 

    $("form").validate({ 
      errorClass: "jqueryError", 
      errorElement: 'label', 
      success: 'jqueryValid', 
      messages: { 
       TopicCategory: { 
        required: 'Please choose a category for topic.' 
       }, 
       TopicSubcategoryId: { 
        required: 'Please choose a subcategory for topic.' 
       }, 
       TopicTitle: { 
        required: 'Please enter a title for topic.' 
       } 
      } 
     $("form").find('input[type=submit]').attr('disabled', 'disabled'); 

     }); 
}) 
+0

Esta es una sintaxis no válida y no funcionará en absoluto. – SLaks

+0

Insertó una declaración en una declaración de objeto Json, que romperá el método de validación, tenga cuidado :) – mamoo

+0

:-) gracias por ahorrar tiempo tratando de resolver mi problema, pero eso nunca funcionará. –

1

No he utilizado el validador plugin de jQuery pero la lectura de los documentos aquí

http://docs.jquery.com/Plugins/Validation/validate

usted podría

1) DISA ble el botón de devolución de llamada en el submitHandler

2) dejar el código para desactivar existente, pero luego volver a habilitar el botón de devolución de llamada en el invalidHandler

Cuestiones relacionadas