PDA

View Full Version : [JSP] Tag SELECT e javascript


itsrv
16-12-2008, 14:29
Ragazzi,

sto preparando un esame.

In buona sostanza ho una pagina con una SELECT che viene popolata con delle occorrenze di prodotti e un tasto che alla sua pressione apre un'altra pagina passandogli tramite un java script la stringa del prodotto selezionato.
Quello che non riesco a fare è propio questo passaggio...ovvero come intercetto il testo dell'option che è stato selezionato e lo invio alla pagina successiva?

Vi posto il codice che ho scritto e allego il print screen della pagina:


Grazie a tutti

<%@ page import = "MagaServer.*,java.util.*,java.rmi.*, java.rmi.server.*" %>

<script>
//Codice JavaScript. IGNORARE!!
function openWindow()
{
//prodotto=prodotti.nome.text;

prodotto=nome.[nome.selectedIndex].value

//menu.options[menu.selectedIndex].text

//prodotto="pavilion";
win=window.open('infoProd.jsp?prodotto='+prodotto,'','');
}
</script>

<body text="#FFFF00" bgcolor="#0000FF" vlink="white">
<%
Magazzino object=(Magazzino)Naming.lookup("//localhost:20000/Magazzino");
String user=(String)session.getAttribute("user");
%>
<h1>Gestione Prodotti</h1>

<form name="prodotti" action="modificaGiacenze.jsp">
Prodotto:
<select size="1" name="nome">
<%
ArrayList lista=object.listaProdotti(user);
Iterator iter=lista.iterator();
while(iter.hasNext())
{
Prodotto p=(Prodotto)iter.next();
out.print("<option>");
out.print(p.getNome());
out.println("</option>");
}
%>
</select>

<input type="button" value="Informazioni Prodotto" onClick="javascript:openWindow();">
<p><input type="radio" value="I" checked name="giacenze">Incrementa</p>
<p><input type="radio" name="giacenze" value="D">Decrementa</p>
<p>Quantità: <input type="text" name="quant" size="20"></p>
<p><input type="submit" value="Modifica">
</form>

</body>

FixFixFix
16-12-2008, 14:52
di solito si usa associare al form un <input> di tipo hidden. poi metti una funzione javascript che cambi il value del campo hidden in base a quale radio button viene cliccato. Così facendo quando fai la submit del form ti basta andare a leggere il valore del campo hidden e dimenticarti dei radio button.

FixFixFix
16-12-2008, 14:54
ah la stessa cosa vale per la select... input hidden associato e poi una funzione sull'evento OnSelectedChange ( non mi ricordo esattamente il nome )

itsrv
16-12-2008, 15:01
ah la stessa cosa vale per la select... input hidden associato e poi una funzione sull'evento OnSelectedChange ( non mi ricordo esattamente il nome )

ma io il mio problema è solo in queste 3 righe:


//prodotto=prodotti.nome.text;

prodotto=nome.[nome.selectedIndex].value

//menu.options[menu.selectedIndex].text

//prodotto="pavilion";
win=window.open('infoProd.jsp?prodotto='+prodotto,'','');
}


cioè non iresco ad intercettare il testo del valore selezionato...ho provato con prodotto=nome.[nome.selectedIndex].value ma niente...
E' una stupidaggine lo so ma io non riesco...sarà lo stress da esame!

FixFixFix
16-12-2008, 15:21
menu.options[menu.selectedIndex].text

così dovrebbe essere corretto...

però devi essere sicuro che dentro menu ci sia qualcosa, fai un Alert(menu) per debuggare. secondo me dovrai fare una GetElementById() per accedere a quel elemento

itsrv
16-12-2008, 15:35
menu.options[menu.selectedIndex].text

così dovrebbe essere corretto...

però devi essere sicuro che dentro menu ci sia qualcosa, fai un Alert(menu) per debuggare. secondo me dovrai fare una GetElementById() per accedere a quel elemento

che sia popolato è sicuro...ma è altrettanto sicuro che non funzionano nell'ordine:

prodotto=prodotti.nome.text;
menu.options[menu.selectedIndex].text
prodotto=prodotti.nome.value; //che è la souzione del professore.

Il passaggio dei dati alla form successiva ovvero win=window.open('infoProd.jsp?prodotto='+prodotto,'',''); funziona eccome. Infatti se si forza la variabile prodotto="quello chevuoi" la stringa la ritrovo nella pagina successiva.

FixFixFix
16-12-2008, 15:47
questo l'hai provato ?

prodotti.nome.options[prodotti.nome.selectedIndex].text

altrimenti prova a mettere id="nome" al tag <select>

e poi nel javascript a fare

var nometmp = document.getElementById('nome');
var text = nometmp.options[nometmp.selectedIndex].text;

itsrv
16-12-2008, 17:38
questo l'hai provato ?

prodotti.nome.options[prodotti.nome.selectedIndex].text

altrimenti prova a mettere id="nome" al tag <select>

e poi nel javascript a fare

var nometmp = document.getElementById('nome');
var text = nometmp.options[nometmp.selectedIndex].text;

Grazie!!!! Ha funzionato la prima...non è che abbia capito molto perchè ma ha funzionato! Adesso mi ci concentro un po' su e cerco di capire cosa c'è sotto...

Cmq Grazie molte