2010-12-01 18 views
1

Ich versuche, ein Feld aus der Ferne zu überprüfen, indem ich zwei verschiedene Felder anschaue. Das Problem ist, dass ich in den Beispielen, in denen ich sehe, wie man das Senden zusätzlicher Daten per Remote-Validierung durchführt, die ID des anderen Feldes verwenden, das gerade verarbeitet wird. Das Beispiel auf der jQuery validate API-Seite für remote() verwendet "#username" und sendet dies zusätzlich zum E-Mail-Feld.Senden zusätzlicher Informationen mit JQuery-Remote-Formularüberprüfung

Meine Seite ist ungerade, und hat mehrere Formulare, die identisch sind, und die Anzahl der Formulare auf der Seite ist variabel, so dass ich keine eindeutige ID für jedes Feld haben kann. Gibt es eine Möglichkeit herauszufinden, welches Feld oder welche Form validiert wird? Ich habe so etwas wie das Folgende versucht, weil ich dachte, $ (das wäre das Textfeld gewesen, das validiert wurde, oder das einzelne Formular wird validiert, aber das scheint nicht der Fall zu sein.

number: { 
        required: true, 
        number: true, 
        remote: { 
        url: "confirm.php", 
        data: { 
         toy: function() { 
          return $('select[name="toy"]:selected',this).val(); 
         } 
        } 
        } 
      } 

Danke, Jared

Edit: Ich landete einen Weg herauszufinden, um es zu arbeiten. Der Rat, das Formular weiterzugeben, gab mir die Idee.

Da ich mehrere Formulare auf der Seite hatte, verwendete ich $ ('form'). Je (function() {$ (this) .validate ({....})});

So gespeichert ich nur einen Verweis auf die aktuelle Form mit var form = $ (this) vor dem Validieren Anruf, und dann im Beispiel, das ich früher gab ich hatte nur eine kleine Änderung vornehmen:

data: { 
    toy: function() { 
     return $('select[name="toy"]',form).val(); 
    } 
} 

Und jetzt weiß jedes Feld, zu welcher Form es gehört!

Antwort

1

Sie können jedem Formular einen eindeutigen formId zuweisen, und jedes Mal, wenn das Formular gesendet wird, können Sie die formId zusammen mit den anderen Informationen aus dem Formular senden, um zu identifizieren, welches Formular übermittelt wird?

Zum Beispiel in dem HTML-Code des Formulars, können Sie etwas zu tun:

Form # 1: (mit Formular-ID als 1)

<form id="form_1"> 
Name: <input type='text' id='name_1'> <br> 
Address: <input type='text' id='address_1'> <br> 
<input type='button' value='Submit' onclick='validate(1);'> 
</form> 

Form # 2: (mit Form-ID als 2)

<form id="form_2"> 
Name: <input type='text' id='name_2'> <br> 
Address: <input type='text' id='address_2'> <br> 
<input type='button' value='Submit' onclick='validate(2);'> 
</form> 

im Javascript, so etwas wie diese:

function validate(formId) 
{ 
    var data = {}; 
    //Example data that is to be submitted for validation: 
    data.name = $("#name_" + formId).val(); 
    data.address = $("#address_" + formId).val(); 
    //.. and so on 
    data.formId = formId; 

    $.post('http://example.com/confirm.php', data, function(result) 
    { 
     //process the return of the remote validation here, 
     //found in the variable: result 
    } 
    ); 
} 
+0

Tut mir leid, ich verstehe nicht. Wollen Sie die FormID als zusätzliche Daten in der Remote-Validierungsanfrage senden? Wie soll ich herausfinden, welches Formular validiert wird? Oder sagen Sie, dass Sie die formID senden sollen, wenn das Formular tatsächlich eingereicht wird? – EvilAmarant7x

+0

@evil Ja, ich sage genau das, d. H. Sie senden formId als zusätzliches Datenelement. Ich habe etwas Code hinzugefügt, um mich zu informieren, lassen Sie mich wissen, wenn Sie weitere Fragen haben –

+0

Vielen Dank für den Hinweis! Obwohl ich nicht genau das gebrauchen kann, was du gepostet hast (meine Seite hat alles auf einmal eingereicht), gab es mir die richtige Idee. – EvilAmarant7x

Verwandte Themen