2010-10-05 4 views
1

Mon pop-up Facebox contient un formulaire avec un bouton de soumission. J'ai aussi un second bouton pour ouvrir un pop-up Facebox indépendant qui fonctionnait avant d'ajouter jQuery.validate au projet. Je dois valider les champs de courriel et de mot de passe avant d'être soumis.jQuery.validate peut avoir cassé Facebox pop-up

Je dois ajouter que ces fenêtres contextuelles sont chargées via des fichiers .html externes. Cela les a chargés via la requête AJAX.

Sur index.html, les pop-ups sont configurés (k $ est égal à jQuery.noConflict());

$k('a[rel*=example_2]').facebox_1({ 
    loading_image : '/images/loading.gif', 
    close_image : '/images/closelabel.gif' 
}); 

Et le lien cliqué pour ouvrir le Facebox ci-dessus:

<a href="login.html" title="Log In" rel="example_2" id='login'>Log In </a> 

Et tout est ci-dessous dans login.html

La validation:

$(function() { 
    $('form[name="login"]').validate({ 
     rules: { 
      email: { required: true, email: true }, 
      password: "required" 
     }, 
     messages: { 
      email: "", 
      password: "" 
     } 
    }); 
}); 

Et la formulaire:

<form name="login" method="post" action="login.aspx"> 

Et le bouton qui ne fonctionne pas

<a href="#" title="Register" onclick="showRegister()" ><img src="images/register.jpg" /></a> 

Nick m'a aidé à obtenir l'affichage de forme this poste, mais il semble avoir cassé l'autre bouton. J'ai des problèmes pour déboguer le script, car je ne sais pas si Firebug peut définir des points d'arrêt dans des pages externes demandées (via XHR).

J'ai essayé d'ajouter un gestionnaire de clic au bouton cassé qui s'appelait simplement showRegister() et qui ne fonctionnait pas non plus. showRegister() appels simples $('#linkFromIndexDotHtml').click(); qui est, en fait, un lien de index.html. Je pensais que c'était peut-être le problème, mais cela fonctionnait avant.

+0

qui * autre bouton *? Je ne suis pas clair sur ce qui est cassé ici, pouvez-vous développer un peu? –

+0

L'autre "bouton" est le '', où 'showRegister()' appelle .click sur un lien qui existe sur la page "parent", index.html. Cela a-t-il du sens? Ce bouton est à l'intérieur du formulaire sur login.html. Je l'ai essayé en dehors du formulaire, et il se comporte de la même manière. –

+0

Alors, est-ce que je dois écrire ma propre validation? –

Répondre

0

J'ai eu le même problème et a résolu le problème avec les informations de http://old.nabble.com/Validation-and-Facebox-td22187264s27240.html

$.extend($.facebox, { 
    settings: { 
    dom_data: null, 
    dom: null, 

... * ajouter dans les variables dom et dom_data dans la déclaration principale de facebox

if (href.match(/#/)) { 
     var url = window.location.href.split('#')[0] 
     var target = href.replace(url,'') 
     $.facebox.settings.dom = target; 
     $.facebox.settings.dom_data = $(target).children(); 
     $.facebox.reveal($(target).children().show(), klass) 

. .. * ceci est dans fillFaceboxFromHref

enfin,

$(document).bind('close.facebox', function() { 
    if($.facebox.settings.dom){ 
    $($.facebox.settings.dom).append($.facebox.settings.dom_data); 

    $.facebox.settings.dom = null; 
    $.facebox.settings.dom_data = null; 
    } 

... * ceci est à la fin du fichier