Newsgroup: it.comp.lang.javascript
Titolo: creare un option in una select da popup

Ciao ragazzi,
ma se volessi scrivere da popup a un form sottostante...
su una select option....
io ho un form id="formtutto" e all'interno una
SELECT name="GrupDateEscluse" id="GrupDateEscluse"  Multiple size="8"
devo creare un option all'interno della select  da una popup
quindi uso il
function moveToSelect1(from,to){
 to.appendChild(from);
}
moveToSelect1(data,window.opener.document.getElementById("GrupDateEscluse"))
ma nn mi funziona!!! :-( 

 moveToSelect1(data,window.opener.document.getElementById
("GrupDateEscluse"))
che è "moveToSelect1"?

 ha scritto nel messaggio 
news:idlul9$atn$3...@news.eternal-september.org...


Cristiano sono giunto a questo punto
clicco su un link
   function insertOption(selvalue, seltext){
          anOption = document.createElement("option");
          document.getElementById("GrupDateEscluse").options.add(anOption, 
0);
          anOption.appendChild(document.createTextNode(seltext));
          anOption.Value = selvalue;
      }
dove passo insertOption('12/11/2010','data')
ma nn mi aggiunge il nodo alla mia select option...
<SELECT name="GrupDateEscluse" id="GrupDateEscluse"  Multiple size="8">
</select>
 

Ma dove sbaglio cosi?
    var newOption = document.createElement('<option value='+data+'>');
    opener.document.forms['formtutto'].elements['GrupDateEscluse'].options.add(newOption);
    newOption.innerText = data;
 

 ma nn mi aggiunge il nodo alla mia select option...
errori?
Sopra non vedo alcun riferimento dalla popup alla "madre" ...

     newOption.innerText = data;
innerText è una bruttura IE-Only (basta comunque usare la proprietà text)

> Sopra non vedo alcun riferimento dalla popup alla "madre" ...
si hai ragione.
allora riepilogando:
1) mi trovo nella mia popup e clicco un link ...
e faccio eseguire questo codice (dentro la popup )
         var anOption = document.createElement("option");
         opener.document.getElementById("GrupDateEscluse").options.add(anOption, 
0);
         anOption.text = data;
         anOption.value = data;
ma sulla mia comboo select
SELECT name="GrupDateEscluse" id="GrupDateEscluse"  Multiple size="8"
non mi vedo il nuovo option...
 

          anOption.value = data;
assegnerei i valori degli attributi prima di usare add (anche se dovrebbe 
funzionare lo stesso)
eseguirei tutta la function nella finestra "madre" (mai provato come fai 
te, chissà se funziona ...)
Quindi avrai tutta la function che si occupa di inserire la nuova option 
nella finestra madre, e dalla popup non farai altro che invocarla 
(opener.nomefunzione(parametri))
Se "non va": la console javascript di firefox cosa dice?

 funzionare lo stesso)
Cristiano il problema era proprio questo!!!
l'assegnazione doveva essere fatta prima :-) 

 :-(
non funziona con IE però!!! è possibile?
         var anOption = document.createElement("option");
         anOption.text = data;
         anOption.value = data;
         opener.document.getElementById("GrupDateEscluse").options.add(anOption, 
0);
 

 ha scritto nel messaggio 
news:idq9eo$u61$3...@news.eternal-september.org...


> newOption.text=
la riga che da errore sul  browser IE al momento che richiamo la funzione 
che crea Option è
  opener.document.getElementById("GrupDateEscluse").options.add(anOption)
dicendomi errore non specificato!!!
 

 dicendomi errore non specificato!!!
Qua:
 
http://msdn.microsoft.com/en-us/library/ms535921%28VS.85%29.aspx
Dice di usare innerHTML per IE ...
(stai usando createElement nella finestra madre, vero?)

 ha scritto nel messaggio 
news:idqrn7$kn8$2...@news.eternal-september.org...


 si sulla popup
cosa vuol dire? io dicevo di eseguire il tutto nella "Madre", non nella 
popup.

 ha scritto nel messaggio 
news:idqrn7$kn8$2...@news.eternal-september.org...

si sto usando.
questo codice dentro la popup
       var anOption = document.createElement("option");
        anOption.text = data;
        anOption.value = data;
        opener.document.getElementById("GrupDateEscluse").options.add(anOption);
comunque neanche se utilizzo innertext funziona su IE!!!
mentre se creo all'interno della stessa pagina (nel popup mi sono creato un 
select id=GrupDateEscluse)
mi funziona.
a questo punto deduco che il document.createElement("option"); su IE non 
funziona tra Popup e pagina sottostante?
ma come puo essere mai? proprio IE che solitamente qualunque cosa (scritta 
pure male ) se la inghiotte!!!
che mi consigliate di fare?
 

 funziona tra Popup e pagina sottostante?
e' quello che sto cercando di farti testare ...

 e' quello che sto cercando di farti testare ... 

 MADRE).
no, onclick devi semplicemente fare opener.tuafunction(parametri), poi è 
dalla opener (la madre) che farai tutto ...

 l'ho provato!!
Scusa, ma incuriosito ho creato le 2 pagine. La function la ho presa da 
una di quelle che hai postato te.
Madre:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
  <head>
  <meta http-equiv="content-type" content="text/html;
charset=windows-1250">
  <title>Test</title>
<script type="text/javascript">
	function addOption(data) {
	var anOption = document.createElement("option");
        anOption.text = data;
        anOption.value = data;
        document.getElementById("miaSelect").options.add(anOption);
	}
</script>
 </head>
<body>
<div><form method="get" action="#" onsubmit="return false">
<select name="miaSelect" id="miaSelect"></select>
</form></div>
<button onclick="window.open('popup.htm')">Apri popup</button>
</body>
</html>
popup ("popup.htm"):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
  <head>
  <meta http-equiv="content-type" content="text/html;
charset=windows-1250">
  <title>Test</title>
<script type="text/javascript">
	function addAndClose(testo) {
		opener.addOption(testo);
		window.close();
	}
</script>
 </head>
<body>
<button onclick="addAndClose('Testo da Aggiungere')">Aggiungi alla madre 
una option e chiuditi</button>
</body>
</html>
Perfettamente funzionante con IE8. Con quale versione di IE stai 
testando? Quanto sopra ti funziona?

oK,
codice PAGINA MADRE
a href="javascript:popup_data()"
img border="0" src="images/img_pannello/calendario.gif" width="34" 
height="17"
/a
SELECT id="GrupDateEscluse" name="GrupDateEscluse"  Multiple
/select
CLICCO SUL "CALENDARIO" funzione popup_data E MI APRO La popup
codice DENTRO POPUP
a href="#" 
onclick="setInfo('<%=GiornoCorrente%>','<%=cMese%>','<%=cAnno%>')"><%=GiornoCorrente%>
/a
function setInfo(giorno,mese,anno)
{
var data
if (giorno.length == 1 ){giorno = "0" + giorno}
if (mese.length == 1 ){mese = "0" + mese}
data = giorno + "/" + mese + "/" + anno
        var anOption = document.createElement("option");
        anOption.text = data;
        anOption.value = data;
        opener.document.getElementById("GrupDateEscluse").options.add(anOption);
        window.close();
}
spero che cosi sia tutto più chiaro.
 

 testando? Quanto sopra ti funziona?
IE 8
si questo codice che hai postato mi funziona pure a me.
ho omesso di dire che la form della pagina madre è questa
<form method="POST" action="Ris_VincoliDataConsegna.asp" name="formtutto" 
id="formtutto" 
onsubmit="selectAll(this.GrupZonaOut.options);selectAll(this.GrupDateEscluse.options);">
dove la selectAll è una funzione che mi seleziona tutti gli option (non 
penso dovrebbe comportare problemi però)
function selectAll(els){
	for (var i=0;i<els.length;i++){
		els[i].selected=true;
	}
} 

 }
niente di diverso. se il mio va e il tuo non va, devi capire te il 
perché, il codice "base" funziona perfettamente.

         window.close();
e quindi non stai facendo ciò che dici di fare ... ripeto: il codice del 
createElement devi metterlo nella madre, non nella popup. Come nel mio 
esempio.

Grazie Cristiano, 
mettendo il codice di creare sulla pagina MADRE funziona....
:-) 
 

 mettendo il codice di creare sulla pagina MADRE funziona.... :-)
Mannaggia ... ... ... :-)