2011-06-24 4 views
2

Lorsque j'appelle $("form").valid() J'ai un contrôle de validation à distance connecté (qui fonctionne bien) mais si tous les autres champs sont valides, le formulaire passe la validation parce que la vérification à distance n'a pas retourné un réponse "assez rapide".jquery validation - attente de la vérification à distance complète

Existe-t-il un moyen de forcer la validation jquery à attendre que les vérifications à distance soient terminées ou de se connecter à l'événement complet de l'appel de vérification à distance?

J'utilise actuellement le validateur à distance intégré dans le cadre de la validation jQuery http://docs.jquery.com/Plugins/Validation/Methods/remote

+0

est SO n'y a pas moyen d'obtenir automatiquement via le cadre de la validation jquery? – monkeylee

Répondre

2

vous pouvez ajouter une règle personnalisée et cette règle personnalisée, vous pouvez faire l'appel ajax.

Veuillez vérifier l'article SO here pour créer des règles personnalisées.

Dans cette fonction, effectuez l'appel ajax.

3

une façon est d'introduire une variable qui sera définie sur true lorsque l'appel à distance revient

var remote_complete = false; 

$.ajax({ 
    url: "test.html", 
    success: function(){ 
    remote_complete = true; 
    } 
}); 

while (remote_complete == false) 
    { 
    // loop until remote_complete = true; 
    } 

Une autre façon est de valider votre formulaire après validation à distance complète

$.ajax({ 
     url: "test.html", 
     success: function(){ 
     validate_form(); 
     } 
    }); 
+1

Faites attention à la boucle while - le navigateur risque de ne plus répondre. – iblamefish

+1

Je préférerais ce dernier. Si vous voulez vraiment prendre la première approche, utilisez au moins 'setInterval'. – Tower

+0

sans setinterval - mauvaise idée –

0

Eh bien, Si vous avez correctement configuré toutes vos règles, cela ne devrait pas poser de problème. Voir ce demo où l'email est en cours de validation à distance et la validation ne passe pas jusqu'à ce que le chèque revienne. Pouvez-vous poster un jsfiddle qui met en évidence votre problème?

0

http://gloryplus.com/index.php?route=product/product&path=82&product_id=173

rules: { 
     name: { 
     minlength: 2, 
     required: true 
     }, 
     email: { 
     required: true, 
     email: true 
     }, 
     subject: { 
     minlength: 2, 
     required: true 
     }, 
     message: { 
     minlength: 2, 
     required: true 
     } 
    }, 
    highlight: function(label) { 
     $(label).closest('.control-group').addClass('error'); 
    }, 
    success: function(label) { 
     label 
      .text('OK!').addClass('valid') 
      .closest('.control-group').addClass('success'); 
    } 
Questions connexes