2010-02-28 6 views
5

Comment puis-je effectuer les opérations suivantes à l'aide de jQuery: Ouvrez une fenêtre contextuelle qui renvoie une valeur à la fenêtre parent lorsque vous cliquez sur un lien dans la fenêtre enfant, fermez la fenêtre enfant, puis parent soumet automatiquement un formulaire basé sur la valeur retournée?Fenêtre contextuelle jQuery Renvoyer la valeur au parent

Je me rends compte que le jQuery Dialog est une solution populaire, mais j'ai besoin d'une fenêtre contextuelle car le contenu de la fenêtre doit être navigable, et je veux éviter d'utiliser un iframe dans la boîte jQuery.

La fenêtre contextuelle va être utilisée pour collecter plus d'une valeur, pour finalement être renvoyée en tant que chaîne délimitée au parent, mais cette collecte de données doit avoir lieu avant la soumission du formulaire de la fenêtre parente. S'il y avait un modèle de conception standard pour un "sélecteur d'entité", ce serait le cas.

Cela doit travailler dans IE8, FF3.6, Safari 4 et Chrome 5.

Merci, Mark

+0

Pourquoi auriez-vous besoin du contenu de la fenêtre navigable? Cela n'a pas de sens - si vous voulez avoir un popup pour le formulaire d'une page, pourquoi laisser l'utilisateur naviguer ailleurs? –

+0

Étant donné que la fenêtre contextuelle va être utilisée pour collecter plusieurs valeurs, elle doit finalement être renvoyée en tant que chaîne délimitée au parent, mais cette collecte de données doit avoir lieu avant la soumission du formulaire de la fenêtre parente. S'il y avait un modèle de conception standard pour un "sélecteur d'entité", ce serait le cas. –

Répondre

6

Voici ma solution:

var parent = $(parent.document.body); 
$(parent).find('input#valStore').val(theVal); 
$(parent).find('form#myForm').submit(); 
window.close(); 
6

Dans la fenêtre de votre navigateur nouvellement ouvert, vous pouvez essayer quelque chose comme

$("#mylink").click(function(){ 
     value = /* get some value */ 
     window.opener.$("#myform .somehiddenfield").val(value); 
     window.opener.$("#myform").submit(); 
     window.close(); 
}); 

DISCLAIMER: Je n'ai pas testé dans un navigateur.

+0

Merci pour la réponse, mais "get some value" est un peu vague pour moi. Et si cette valeur venait de l'état de la session de l'application, par exemple? Comment pourrais-je attribuer cela dans votre exemple? –

+0

Ensuite, vous le rendre comme ceci: value = '<% = Session ["mykey"]%>'. Mais si la valeur provient de l'état de la session, pourquoi auriez-vous besoin de la passer entre les fenêtres? Je m'attendais à ce que vous l'obteniez à partir d'un champ de saisie (zone de texte) dans la fenêtre enfant. Alors ce serait value = $ ('input.sometextbox'). Val(); – Rune

+0

J'ai édité ma question originale pour clarifier. La fenêtre contextuelle permet de parcourir le système pour collecter diverses références d'entité, puis de les renvoyer au parent en tant que chaîne délimitée. Vous pouvez penser à ceci comme un panier, où les éléments sélectionnés sont stockés dans l'état de la session. –

Questions connexes