ma a te la funzione presub(aform) funziona?
poi ho provato a verificare l'errore con Firefox.
Lo script cambia tutte le funzioni.
ti conviene fare un test.
Grazie comunque.
ma a te la funzione presub(aform) funziona?
poi ho provato a verificare l'errore con Firefox.
Lo script cambia tutte le funzioni.
ti conviene fare un test.
Grazie comunque.
Funge sia su IE 6.0 che su FF 0.93Originariamente inviato da agenti
ma a te la funzione presub(aform) funziona?
poi ho provato a verificare l'errore con Firefox.
Lo script cambia tutte le funzioni.
ti conviene fare un test.
Grazie comunque.
Win 2000
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
Testato adesso sul mio PC di casa.
Win XP SP2
IE 6.0.2900 -> Nessun problema
FF 1.0.6 -> Problema sulla cancellazione in 's1'
Ma in entrambi casi i dati sono passati correttamente alla seconda pagina.
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
mhhhhhhh
forse è meglio cheapprofondisco la cosa...
questo è il codice html....
purtroppo la funzione presub sembra non funzionare infatti i parametri non passano, devo obbligatoriamente selezionarli.
a me sembra tutto ok...codice:<script language="JavaScript" type="text/javascript"> <!-- function sposta(sel1,sel2) { if (sel1.selectedIndex < 0) { return; } // if (sel1.selectedIndex < 0) //-------- Ricavo la riga selezionata var oCurOption = sel1.options.item(sel1.selectedIndex); //-------- Creo una nuova opzione var oOption = document.createElement("OPTION"); //-------- La aggiungo alla seconda select sel2.options.add(oOption); //-------- Assegno i valori della prima select alla seconda oOption.value = oCurOption.value; oOption.innerText = oCurOption.innerText ; //-------- Elimino la riga spostata elimina(sel1); } // function sposta(sel1,sel2) function elimina(unSelect) { if (unSelect.selectedIndex < 0) { return; } // if (unSelect.selectedIndex < 0) unSelect.options.remove(unSelect.selectedIndex) } // function elimina(unSelect) function preSub(aForm) { indice = 0; oSelect = document.getElementById('s2'); nbElem = oSelect.length; for (i=0;i<nbElem;i++) { curOption = oSelect.options.item(i); var hiddenVar = document.createElement('INPUT'); hiddenVar.name = 's['+indice+']'; hiddenVar.type = 'hidden'; hiddenVar.value = curOption.value; aForm.appendChild(hiddenVar); indice++; } // for (i=0;i<nbElem;i++) return true; } // function preSub() //--> </script> <form method="POST" action="insert.asp" onsubmit="return preSub(this)"> <select id="s1" size="16" name="valori1" onclick="sposta(document.getElementById('s1'),document.getElementById('s2'))" > <option>Afghanistan </option> <option>Albania</option> <option>Algeria</option> <option>Andorra</option> </select> <input type="button" value="AGGIUNGI-->" onclick="sposta(document.getElementById('s1'),document.getElementById('s2'))"><input type="button" value="<--ELIMINA" onclick="sposta(document.getElementById('s2'),document.getElementById('s1'))"> <select id="s2" size="16" name="destinazione" multiple> <option value="5">[---------------------------------]</option> </select> <input type="button" value="CANCELLA TUTTI" onclick="elimina(document.getElementById('s2'))"></td> </tr> </table> </td> </tr> </table> <input type="submit" value="Invia" name="B1"><input type="reset" value="Reimposta" name="B2"></p> <input type="hidden" name="catalogo" value="ok"> </form>
ciao.
ho capito il problema...
hiddenVar.name = 's['+indice+']';
cosi tu crei un input in un ciclo di nome s(i)
io invece necessito di un <input name="destinazione">
infatti ho modificato così:
function preSub(aForm) {
indice = 0;
oSelect = document.getElementById('s2');
nbElem = oSelect.length;
for (i=0;i<nbElem;i++) {
curOption = oSelect.options.item(i);
var hiddenVar = document.createElement('INPUT');
hiddenVar.name = 'destinazione';
hiddenVar.type = 'hidden';
hiddenVar.value = curOption.value;
aForm.appendChild(hiddenVar);
indice++;
} // for (i=0;i<nbElem;i++)
return true;
} // function preSub()
dato che il modulo di ricezione splitta la stringa post ricevuta in un array non ho bisogno di indicizzare i valori "destinazione" con una name diverso.
Comunque la modifica che ho fatto mi invia dati vuoti...
ovvero
se sposto due valori da s1 a s2 esempio
Angola
Andorra
il form invia solo= , ,
Infatti non dai nessun valore alle tue opzioni. Quindi quella proprietà è vuota (salvo per l'elemento '---------------')
Poi creavi tante volte lo stesso input hidden. L'avevo messo nel ciclo perche riempivo un array. Mentre x te deve stare fuori.
Prova cosi
codice:function preSub(aForm) { var hiddenVar = document.createElement('INPUT'); hiddenVar.name = 'destinazione'; hiddenVar.type = 'hidden'; aForm.appendChild(hiddenVar); arrX = new Array(); // indice = 0; oSelect = document.getElementById('s2'); nbElem = oSelect.length; for (i=0;i<nbElem;i++) { curOption = oSelect.options.item(i); if (curOption.value != '') { arrX[i] = curOption.value; } else { arrX[i] = curOption.text; } indice++; } // for (i=0;i<nbElem;i++) hiddenVar.value = arrX.toString(); alert(hiddenVar.value); return true; } // function preSub()
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
tutto funzia...
carino anche l'alert
Grazie.
ancora una cosa...
su ff ancora da un errore:
su aggiungi:
Errore: unSelect.options.remove is not a function
File sorgente: http://localhost/etc.asp
Riga: 38
unSelect.options.remove(unSelect.selectedIndex)
e non passa il valore da s1 a 2.
ciao.