2009-03-19 8 views

Répondre

10

Voici mon parti; cet extrait JavaScript doit entrer dans la tête de votre page:

<script> 
process = function() 
{ 
    window.open('about:blank', 'popup', 'width=320,height=240,resizeable=no'); 
    document.login.setAttribute('target', 'popup'); 
    document.login.setAttribute('onsubmit', ''); 
    document.login.submit(); 
}; 
</script> 

Et ceci est un exemple de formulaire à des fins de démonstration:

<form action="handle.html" method="get" name="login" onsubmit="process(); return false;"> 
Username: <input type="text" name="username" id="username" /><br /> 
<input type="submit" /> 
</form> 

Maintenant, voici ce qui se passe: d'abord, nous avons mis en place un formulaire et donnez-lui un attribut onsubmit qui lui indique d'exécuter la fonction process() et return false; au lieu de soumettre normalement; à partir de ce point, cette fonction prend le dessus et crée une fenêtre contextuelle, en lui donnant un nom, et certaines fonctionnalités (par tous les moyens, ajouter des surplus que vous souhaitez), puis l'attention revient à la forme, où nous définissons maintenant l'attribut target au nom de la fenêtre que nous venons de créer.

Nous devons alors effacer onsubmit que nous avons défini plus tôt, ou cette même chose se reproduira, et ce n'est certainement pas ce que vous voulez. Enfin, nous avons juste le formulaire soumis à nouveau et il passe maintenant toutes ses informations à la fenêtre sauté; à partir de là, il suffit d'obtenir handle.html (ou tout ce que vous finissez par appeler votre page de traitement) pour faire son travail avec les données.

J'espère avoir aidé.

+0

Y at-il un moyen de faire cela en utilisant la poste au lieu d'obtenir? Bien sûr, je l'ai fait à votre façon, mais changer simplement la méthode pour la publier dans l'étiquette de formulaire n'a pas fonctionné. Post est supposé être plus sûr que d'obtenir, donc vous devriez essayer de l'utiliser autant que possible. – Muskie

+1

Je l'ai fait avec poste au lieu d'obtenir sans problème! bien que mon code varie un peu, ma forme: '

' et ma fonction js: 'function target_popup (form) { w = window.open ('', 'metas_pop', 'width = 1000, height = 600, redimensionnable, barres de défilement'); form.target = 'metas_pop'; w.focus(); } '. aussi, comme un avis plus que j'ai ajouté le w.focus() pour ouvrir la popup tout de suite, même si elle était déjà ouverte mais sans focus (par exemple d'une soumission précédente). J'espère que ça marche pour toi – DiegoDD

Questions connexes