2012-08-11 13 views
5

$ ('Selektor'). Validierung() scheint mehr für die Schaltfläche "Eingabe" als die Schaltfläche "Button" gebaut werden. Wie würde ich es mit einem Button-Typ innerhalb des Formulars arbeiten?JQuery Validierung mit "Schaltfläche" statt Typ "Senden" für ein Formular

@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() { 

     }); 
}); 

diese Grundidee verwenden, wie würde ich jquery Validate arbeiten mit einem Knopf, anstatt eine Art Schaltfläche einreichen? Ich habe Beispiele gesehen, bei denen JQuery automatisch Fehlermeldungen anzeigt, wenn die Regeln nicht erfüllt werden, wenn der Übergabetyp verwendet wird, aber es scheint nicht mit dem Knopftyp zu funktionieren. Ich würde mich über jeden Hinweis freuen!

+0

Verwendung dieses einem Klick $ ("# theForm") bestätigen(); – Thulasiram

Antwort

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

reichen Sie einfach das Formular ein - validate macht den Rest. – Ryley

+1

Das Problem besteht darin, dass die Validierung nicht automatisch mit dem Typ "button" funktioniert, wie dies beim Typ "submit" der Fall ist. Sie bekommen nicht alles, was "validiert, tut den Rest" mit einfachen alten Tasten. Es scheint für "Senden" -Tasten erstellt zu werden. – TheDude

+0

@TheDude - Ich verstehe, mein Punkt war, dass validieren bereits an die Einreichung des Formulars angeschlossen ist, also ist es das logischste, Ihren Button zu machen, ist ... das Formular absenden. – Ryley

4

Ein hackish Weg könnte sein:

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

Das ist nicht mal hackisch - der Punkt ist, dass Sie das Formular einreichen wollen ... jQuery validate tut den Rest. Ich würde die meisten der anderen Antworten hacky nennen - die Arbeit zu tun würde validate sowieso getan haben :) – Ryley

+0

@TheDude - Schau dir an, was er eigentlich macht - er macht den Klick auf den Button das Formular abschicken. Es emuliert, was ein Submit-Button sehr einfach macht. – Ryley

+0

@Ryley - Es kommt darauf an, dass $ .validation für SUBMIT-Typ-Schaltflächen, nicht BUTTON-Typ, erstellt wird. Wenn ich versuche, den BUTTON-Typ zu verwenden, tritt die .validation nicht ein. Ich habe versucht, sie für SUBMIT-Typ-Schaltflächen zu verwenden, und sie funktioniert wie beabsichtigt. Leider muss unsere Anwendung den BUTTON-Typ verwenden können. – TheDude

2

Es funktioniert so ziemlich die gleiche wie wäre es mit einem normalen Eingang, außer es nicht die Methode einreichen unterstützt. preventDefault verhindert, dass die Seite ihre Standardanforderung ausführt. .

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

Ich werde es versuchen ... obwohl ich eine Verbesserung gegeben habe, ich glaube, es wird funktionieren :) –

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

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

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

     }); 

}); 
+1

Danke mate. Wir müssen das Formular vor und dann überprüfen. Problem gelöst. –

Verwandte Themen