2012-08-11 16 views
5

$ ('selector'). La validación() parece construirse más para el botón de tipo "entrada" que para el tipo "botón". ¿Cómo podría hacerlo funcionar con un tipo de botón dentro del formulario?JQuery validación con tipo de "botón" en lugar de tipo "enviar" para un formulario

@using(Html.BeginForm(new {id="TheForm"})) 
{ 
    // code here 
    <input id="TheButton" type="button"> 
} 

JQuery:

$(document).ready(function() { 
     $("#TheForm").validate({ 
      rules: { 
       "AuditDoc.Title": { 
         required: true 
        } 
      } 
     }); 
     $("#TheButton").click(function() { 

     }); 
}); 

Usando esta idea básica, ¿cómo iba a conseguir jQuery validar el trabajo con un botón en lugar de un botón de tipo de presentar? He visto ejemplos en los que JQuery muestra mensajes de error automáticamente cuando las reglas no se cumplen utilizando el tipo de envío, pero no parece funcionar con el tipo de botón. ¡Agradecería cualquier consejo!

+0

uso de este clic de un botón $ ("# ElFormulario") validar(); – Thulasiram

Respuesta

4
$(document).ready(function() { 
     $("#TheForm").validate({ 
      rules: { 
       "AuditDoc.Title": { 
        required: true 
       } 
      } 
     }); 

     $("#TheButton").click(function() { 
      if (!$("#TheForm").validate()) { // Not Valid 
       return false; 
      } else { 
       $("#TheForm").submit() 
      } 
     }); 

     $('#btnReset').live('click', function (e) { 
      //var $validateObj = $('#formId'); 
      //Or 
      var $validateObj = $(this).parents('form'); 

      $validateObj.find("[data-valmsg-summary=true]").removeClass("validation-summary-errors").addClass("validation-summary-valid").find("ul").empty(); 
      $validateObj.find("[data-valmsg-replace]").removeClass("field-validation-error").addClass("field-validation-valid").empty(); 
     }); 
    }); 
+0

solo envíe el formulario - validar hace el resto. – Ryley

+1

El problema es que validate no funciona automáticamente con el tipo "botón" de la forma en que lo hace con el tipo "enviar". No obtienes todo el negocio de "valida lo demás" con botones antiguos. Parece estar construido para botones de tipo "enviar". – TheDude

+0

@TheDude - Entiendo, mi punto es que validar ya está enganchado en la presentación del formulario, por lo que lo más lógico para hacer que su botón haga es ... enviar el formulario. – Ryley

4

Una forma hacker podría ser:

$("#TheButton").click(function() { 
    $("#TheForm").submit() 
}); 
+1

Eso ni siquiera es hackish: el punto es que quieres enviar el formulario ... jQuery validate hace el resto. Llamaría a la mayoría de las otras respuestas hacky - haciendo el trabajo validar hubiera hecho de todos modos :) – Ryley

+0

@TheDude - Mira lo que está haciendo en realidad - está haciendo clic en el botón enviar el formulario. Está emulando lo que hace un botón de enviar de manera muy simple. – Ryley

+0

@Ryley: de lo que se trata es de que $ .validation está diseñado para los botones de tipo SUBMIT, no del tipo BUTTON. Cuando intento usar el tipo BUTTON, la validación. No entra. Intenté usarla para los botones de tipo ENVIAR y funciona según lo previsto. Desafortunadamente, nuestra aplicación necesita poder usar el tipo de BOTÓN. – TheDude

2

Funciona más o menos lo mismo que lo haría con una entrada normal, excepto que no soporta el método de envío. preventDefault solo detiene que la página haga su solicitud predeterminada. .

$("#TheButton").click(function(event) { 
    event.preventDefault(); //or return false 
    getData(); 
}); 
+0

Voy a intentarlo ... aunque dando un voto positivo, creyendo que funcionará :) –

5
$(document).ready(function(){ 

    $("#myform").validate(); 
    $("#byuttion").click(function() { 

     if($("#myform").valid()) 
     { 
      $("#myform").submit(); 
     } 
     else 
     { 
      return false; 
     } 

     }); 

}); 
+1

Gracias amigo. Tendremos que validar el formulario antes y luego verificarlo. Problema resuelto. –

Cuestiones relacionadas