2010-12-01 15 views
1

J'essaie de valider à distance un champ en examinant deux champs différents. Le problème est, dans tous les exemples que je vois sur comment faire à distance de valider l'envoi de données supplémentaires, ils utilisent l'id de l'autre champ qui est en cours de traitement. Ainsi, l'exemple de la page API de validation de jQuery pour remote() utilise "#username" et l'envoie en plus du champ email.Envoi d'informations supplémentaires avec la validation de formulaire à distance JQuery

Ma page est étrange, elle a plusieurs formulaires qui sont identiques et le nombre de formulaires sur la page est variable, donc je ne peux pas avoir un identifiant unique pour chaque champ. Existe-t-il un moyen de savoir quel champ ou formulaire est en cours de validation/d'appel distant? J'ai essayé quelque chose comme le suivant, parce que je pensais que $ (this) aurait été la zone de texte en cours de validation, ou la forme individuelle en cours de validation, mais cela ne semble pas être le cas.

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

Merci, Jared

Edit: J'ai fini par trouver un moyen de le faire fonctionner. Le conseil de passer le formulaire m'a donné l'idée.

Comme j'avais plusieurs formulaires sur la page, j'utilisais $ ('form'). Each (function() {$ (this) .validate ({....})});

Je viens de sauver une référence à la forme actuelle avec la forme var = $ (this) avant l'appel de validation, puis au sein de l'exemple que je donnais plus tôt, je ne devais faire un petit changement:

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

Et maintenant chaque champ sait à quelle forme il appartient!

Répondre

1

Vous pouvez affecter un formId unique à chacun des formulaires, et à chaque fois que le formulaire est soumis, vous pouvez soumettre le formId avec les autres informations du formulaire afin d'identifier quel formulaire est soumis?

Par exemple, dans le code html de votre formulaire, vous pourriez faire quelque chose comme ceci:

Formulaire # 1: (avec la forme id comme 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> 

Formulaire # 2: (avec form id comme 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> 

Dans le javascript, quelque chose comme ceci:

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

Je suis désolé, je ne comprends pas. Voulez-vous envoyer le formID en tant que donnée supplémentaire dans la demande de validation à distance? Comment suis-je censé obtenir quel formulaire est validé? Ou dites-vous d'envoyer le formID lorsque le formulaire est effectivement soumis? – EvilAmarant7x

+0

@evil Oui, je dis exactement cela, c'est-à-dire que vous envoyez un fichier formId en tant que donnée supplémentaire. J'ai ajouté du code à eleborate, faites-moi savoir si vous avez d'autres questions –

+0

Merci pour le conseil! Bien que je ne puisse pas utiliser exactement ce que vous avez posté (ma page a tout soumis à la fois), cela m'a donné la bonne idée. – EvilAmarant7x