2009-12-21 9 views
0
var projectWindow; 
    function btnNew_Click() { 
     var form = document.createElement("form"); 
     form.setAttribute("target", "projectWindow"); 
     form.setAttribute("method", "post"); 
     form.setAttribute("action", "MySite.aspx"); 

     document.body.appendChild(form); 

     var hiddenField = document.createElement("input"); 
     hiddenField.setAttribute("id", "hiddenValue"); 
     hiddenField.setAttribute("name", "ID"); 
     hiddenField.setAttribute("value", "/*get value from javascript*/"); 

     form.appendChild(hiddenField); 

     //Below line I added to fix the new input text field that was visible 
     document.getElementById("hiddenValue").style.visibility = 'hidden'; 

     form.submit(); 

     //The below line i added to give focus if another window is created 
     // The below code does not work 
     projectWindow.focus(); 

     //I also tried this: 
     form.focus(); 
} 

Mon problème dans le code ci-dessus que j'ai obtenu du fil: Javascript Post on Form Submit open a new windowouvrir une nouvelle fenêtre avec les valeurs post améliorations

est qu'il ya un champ d'entrée qui est montré au client que je ne peux pas cacher , sauf pour la première fois avec la ligne que j'ai ajoutée (peut-être s'agit-il de nombreuses valeurs renvoyées par la méthode getElementbyId).

Le deuxième problème est que je veux mettre au point dans la fenêtre nouvellement créée ou rechargée, actuellement il ne fonctionne qu'avec la nouvelle fenêtre.

Répondre

2

Essayez d'ajouter à la onload de la nouvelle fenêtre:

projectWindow.onload = function(){projectWindow.focus()}; 

n'a pas testé ce code, espérons que cette aide! Oh! et de créer une entrée cachée, faites ceci:

var hiddenField = document.createElement("input"); 
    hiddenField.setAttribute("type", "hidden"); 

En outre, getElementById ne doit pas retourner de nombreuses valeurs, juste une! Si cela en retourne plus d'un, il y a quelque chose qui ne va pas.

+0

les choses onload ne fonctionnent pas, comment puis-je ajouter l'onload à la fenêtre nouvellement chargée au lieu du code à la page de l'ouvreur. –

+0

Il semble que le problème que j'avais était lié aux règles de sécurité de Firefox. Cela a fonctionné parfaitement dans Internet Explorer –

0

Ajouter à la réponse de Victor. La fonction btnNew_Click crée toujours un nouvel élément de formulaire.

Vous devez vérifier son existence et ne pas la recréer ou la détruire après l'avoir soumise.

+0

Je vérifie déjà la disponibilité de la nouvelle fenêtre: form.setAttribute ("target", "projectWindow"); pouvez-vous me dire si c'est la chose prévue, si non s'il vous plaît laissez-moi savoir ce que je peux faire pour le régler correctement. –

+0

Je me réfère à la forme créée par document.createElement, pas la fenêtre. –