passer de la valeur/variable de fancybox iframe parent
Je suis à essayer de passer une variable/valeur de la fancybox iframe à la fenêtre parent, sans succès.
Fancybox est lancé à partir d'un lien avec
class="fancybox fancybox.iframe"
Mon code dans la fancybox.iframe est:
$(document).ready(function(){
$('.insert_single').click(function(){
var test = $('.members_body').find('{row.U_USERNAME}');
setTimeout(function(){ parent.$.fancybox.close();},300);return true;
});
});
Où '{ligne.U_USERNAME} " est le nom d'utilisateur de trouver dans l'iframe.
Puis, dans le parent il y a le code suivant:
$(document).ready(function(){
$('.fancybox').fancybox(
{
openEffect:'fade',
openSpeed:500,
afterClose: function(){
alert($(".fancybox-iframe").contents().find(test));
$('#form input[name=username]').val()(test);return false;
}
}
);
});
Mais quand la fancybox est fermé, il n'y a pas d'alerte en montrant avec la variable "test", ni la variable s'affiche sous forme de valeur ou un texte dans le champ de saisie du formulaire.
J'ai lu et essayé diverses solutions trouvées ici sur stackoverflow, sans succès.
Merci par avance pour votre aide
MODIFIER
Voici un Exemple
OriginalL'auteur Someone33 | 2014-05-15
Vous devez vous connecter pour publier un commentaire.
Lorsque la fancybox est fermé, l'iframe est supprimé du document. Si vous devez utiliser
beforeClose
de l'événement au lieu deafterClose
JSFiddle: http://jsfiddle.net/NXY7Y/1/
EDIT:
J'ai édité votre jsfiddle (http://jsfiddle.net/NXY7Y/9/). La mise à jour est dans ce lien
http://jsfiddle.net/NXY7Y/13/
Page principale javscript:
Pas besoin d'utiliser
afterClose
oubeforeClose
événements. Simplement accéder à la fonction parentsetSelectedUser
de l'iframe sur le lien ci-cliquez sur l'événement comme ceci:('{row.U_USERNAME}')
n'est pas un champ de saisie dans l'iframe. Lorsque le lien est cliqué à côté du nom d'utilisateur dans l'iframe-je obtenir ce nom d'utilisateur ($('.insert_single').click(function()
). Alors je veux obtenir ce nom d'utilisateur comme une valeur dans un champ de texte dans la fenêtre parent.Je viens de mettre un exemple de la façon d'accéder à n'importe quel élément à l'intérieur d'une iframe et quand/où vous avez à faire c' (
beforeClose
). remplacer le sélecteur 'input' avec votre sélecteur de...fournir un jsfiddle et je vais le faire fonctionner
Comme message d'alerte-je obtenir
object Object
. Mon code dans lebeforeClose
fonction: var $iframe = $('.fancybox-iframe');alert($('.insert_single', $iframe.contenu ())); " C'est le problème 1. Le deuxième problème est: comment faire pour obtenir le nom d'utilisateur dans le champ de texte. Voici le VIOLON+1 - j'ai posté une solution alternative sans jQuery à l'intérieur de la page enfant.
OriginalL'auteur arvic.rivera
Quelques précisions :
.find()
de trouver des éléments par le sélecteur (que vous essayez de trouver une variable.find(test)
, ce qui n'est pas un format valide)..val()
pour obtenir le contenu d'uninput
champ ou.val(new_value)
pour définir le contenu d'uninput
champ.html()
ou.text()
pour obtenir le contenu de tout élément autre queinput
,exemple: le fait d'avoir ce code html
... et ce jQuery code
...
temp
sera de retourhola
.D'autre part, si vous avez le contrôle sur le iframed page et c'est dans le même domaine que la page parent, alors vous ne pouvez pas besoin de mettre toute jQuery dans la page enfant.
ainsi, ce code html dans l'enfant (iframed) page par exemple
Vous pouvez définir cette jQuery dans votre page parent pour obtenir le contenu de tout élément cliqué dans votre page enfant :
Avis que nous a déclaré le var
_tmpvar
à l'échelle mondiale afin que nous puissions l'utiliser dans les différents rappels.Voir JSFIDDLE
afterClose
. +1OriginalL'auteur JFK