2016-05-10 17 views
1

Ich habe zwei Formulare in einem Benutzersteuerelement, eine E-Mail-Nachricht mit jQuery und Ajax. Leider verwenden unsere CMS .NET Web Forms und Masterseiten, wodurch sich das Namensattribut ändert. Dies macht die Verwendung von jquery validate schwierig, da es auf dem Attributnamen basiert. Hast du irgendwelche Vorschläge, wie ich das lösen kann?jQuery validate Eingabe-ID und submitHandler

-Code

$(function() { 
     $("#tbSendComment").click(function (e) { 

      $('#formComment').validate({ 
       rules: { 
        ctl00$mainPlaceHolder$ctl02$tbCommentSubject: "required", 
        ctl00$mainPlaceHolder$ctl02$tbCommentMessage: "required", 
        ctl00$mainPlaceHolder$ctl02$tbCommentName: "required", 
        ctl00$mainPlaceHolder$ctl02$tbCommentEmail: { 
         required: true, 
         email: true 
        } 
       }, 


       submitHandler: function (form) { 
        var obj = {}; 
        var Uri = '<%: Uri %>'; 
        var Title = '<%: Title %>'; 
        obj.subject = $("#tbCommentSubject").val(); 
        obj.message = $("#tbCommentMessage").val(); 
        obj.name = $("#tbCommentName").val(); 
        obj.fromEmail = $("#tbCommentEmail").val(); 
        obj.cc = $("#cbSendMeCoppyComment").prop('checked'); 
        obj.title = Title; 
        obj.uri = Uri; 


        var jsonData = JSON.stringify(obj); 

        $.ajax({ 
         type: "POST", 
         url: "/leaveacomment", 
         data: jsonData, 
        success: function successFunc(data) { 
        etc 
        etc 
+0

http://stackoverflow.com/questions/619816/jquery-validation-plugin-in-asp-net-web-forms – BenG

+0

Ja, ich habe das gesehen, aber ich kann es nicht mit meinem submitHandler arbeiten, die h Ich brauche, damit mein Formular nicht gepostet wird, falls die Validierung fehlschlägt. – Jonas

+0

Sie sollten die '.validate()' Methode nicht innerhalb einer 'click' Handler Funktion haben. Der einzige Zweck von '.validate()' ist *** *** *** *** das Plugin auf Ihrem Formular zu initialisieren. Diese Methode wird nicht jedes Mal ausgelöst, wenn Sie auf eine Schaltfläche klicken, da das Plugin das Klickereignis automatisch erfasst. Wenn Sie ASP verwenden, wird die '.validate()' Methode automatisch vom 'deeptrugous-validation' Plugin erstellt und Ihre Version von' .validate() 'wird immer ignoriert. – Sparky

Antwort

1

Sie dieses Problem leicht Webformular die durch die Verwendung spezieller Lösung lösen kann:

Statt den ganzen Namen hartcodierte schreiben, verwenden Sie die dynamische control.UniqueID

control.UniqueID was .NET-Verwendung für Ihr Element name Attribut auf der Clientseite

Leider verwendet unser CMS .NET Web Forms und Masterseiten, wodurch sich das Namensattribut ändert.

Sie nie über Ihre Elemente Namensänderungen kümmern, weil sie dynamisch mit Ihren Elementen Namen ändert

In der Client-Seite ändern verwenden Sie es mögen:

var name = "<%= txtTest.UniqueID %>"; 

MSDN