3 Stimmen

JQuery: Bindung des .validate-Plugins an .live

Ich muss die jQuery-Plugin validieren zu Formularen, die ich spontan erstelle. Soweit ich weiß .live() ist die einzige Möglichkeit, dies in jQuery zu tun. Es scheint nicht zu funktionieren, zumindest die Art, wie ich versuche. Ich denke, das ist do'able und es ist nur eebkac!

Das funktioniert gut:

$("form#form_CreateUser").validate({  
   submitHandler: function(form) {  
    // do other stuff for a valid form  
    UserSubmit();  
   }  
});  

Dies führt zu Syntaxfehlern:

$("form#form_CreateUser").live('validate', function() {  
   submitHandler: function(form) {  
    // do other stuff for a valid form  
    UserSubmit(); 
   }  
});

14voto

lonesomeday Punkte 224087

Das funktioniert nicht, weil Sie falsch verstanden haben, wie validate funktioniert. Sie siehe wie Ereignis-Handler-Funktionen wie click aber das ist sie nicht.

click ist eine Abkürzung für bind('click', fn) . validate funktioniert nicht durch die Verwendung von bind . Seit live ist im Grunde eine Möglichkeit, die bind Aufrufe funktionieren bei Elementen, die noch nicht existieren, es funktioniert nicht mit validate .

Der einfachste Weg, dies zu tun, ist eine Funktion zu erstellen, die validate und rufen Sie diese Funktion jedes Mal auf, wenn Sie neue Inhalte einfügen. Wenn Sie zum Beispiel das Formular mit AJAX einfügen, können Sie die Funktion ajaxComplete Funktion:

function setupValidate() {
    $("form#form_CreateUser").validate({
        submitHandler: function(form) {
            // do other stuff for a valid form
            UserSubmit();
        }
    });
}

$(document).ajaxComplete(setupValidate); // after every AJAX request
setupValidate(); // right now

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X