2010-11-25 13 views
0

J'ai un lien sur la page qui, lorsqu'on clique dessus, ouvre une fenêtre avec un contenu de connexion modale Ajax. Ce qui est étrange, c'est que si je supprime le alert('');, la prochaine ligne de code jquery ne fonctionnera pas. Si le alert(''); est là, l'entrée cachée est ajoutée à la fenêtre modale thickbox avant l'entrée avec l'id de "logintest" comme il se doit.avoir du mal à ajouter du html avec jQuery

Je n'ai pas été capable de comprendre pourquoi, quelqu'un?

Voici le code sur la page principale

<a class="login_links" id="myaccount" href="/myaccount.asp">My Account</a> 

<script type="text/javascript" language="javascript"> 
$(function(){ 
$(".login_links").click(function(){ 
var t = this.title || null; 
var s = $(this).attr("href"); 
var g = this.rel || false; 
var l = '/v/AjaxLogin.asp?height=100&width=300&modal=true' 
tb_show(t,l,g); 
var st = s.substr(s.lastIndexOf("/") + 1); 
alert(''); 
$('#logintest').before('<input type="hidden" value="' +st+ '" name="ReturnTo">'); 
return false; 
}); 
}); 
</script> 

Et voici le code sur la page ajax

<div style="text-align:center "> 
<form action="/login.asp" method="post" name="loginform"> 
<table border="0" cellpadding="3" cellspacing="3" style="margin:0 auto;"> 
<tr> 
    <td>Username:</td> 
     <td><input type="text" maxlength="75" size="30" value="" name="email"></td> 
</tr> 
<tr> 
     <td>Password:</td> 
     <td align="left"><input id="logintest" type="password" maxlength="20" size="20" name="password"></td> 
</tr> 
<tr align="right"> 
     <td colspan="2"><input type="submit" value="Login">&nbsp;<input type="submit" id="cancel" value="Cancel" onclick="tb_remove();return false;"></td> 
</tr> 

+1

Qu'est-ce que 'tb_show'? –

+1

@nick: sa fonction de thickbox, qui montre essentiellement le div "lightbox" caché. Si je me souviens bien, tb_show fait des manipulations asynchrones et construit quand il est invoqué. Je parie que la raison pour laquelle cela fonctionne avec l'alerte est qu'elle ajoute un délai qui est juste assez long pour que tb_show termine son travail – prodigitalson

+0

La fonction est un peu longue à poster ici, laissez-moi voir si je peux lier à elle. – user357034

Répondre

1

Ajax chargement est asynchrone. La raison pour laquelle il ne fonctionne pas sans l'alerte est parce que le html de la requête ajax n'a pas encore été ajouté à la dom. Vous devez déplacer ce code vers le rappel de succès. Je ne sais pas si TB le prévoit ou non.

+0

Merci de confirmer mes pensées originales. – user357034