Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    Problema onchange su attributo "Select"

    Non so se il titolo è appropriato, ma ho questo problema che non riesco a risolvere.

    Provo a spiegare il problema.
    In una form Asp ho questo semplice codice html/javascript

    codice:
    <select NAME="CODI_ENTE_LIST" SIZE="5" class="campinull" onchange="javascript:formlistenti()">
    </select>
    [img]images/listevalori.gif[/img]Lista
    Il campo select lo popolo attraverso una lista valori listboxtipolist.asp, la quale funziona benissimo.

    Quello che mi serve però, è che la lista delle descrizioni presenti nel "select" (risultato della lista valori) vengano concatenate, prima di dare il submit/ricerca della form.
    (non mi dilungo sul tipo della concatenazione, perchè non è necessario).
    Per fare ciò, utilizzo quindi la funzione javascript formlistenti(), la quale funziona, anche questa, correttamente.

    Il problema nasce ora.
    Quando clicco sul tasto submit, tale concatenazione, ovvero la chiamata alla funzione javascript formlistenti, si attiva solo se preventivamente clicco su una qualsiasi di queste, evidenziandola. Ovvero, se faccio scattare l'onchange, che secondo le mie conoscenze, dovrebbe scattare ogni qualvolta inserirsco una nuova descrizione/valore nel "select".

    E invece, purtroppo no.

    Senza stravolgere tutto, avrei necessità che la funzione formlistenti(), si attivi quindi a prescindere dal click finale su una qualsiasi delle descrizione del select, ma invece (ad esempio) ad ogni nuovo popolamento del "select".

    Come fare?
    Pensavo all'onload, ma chiaramente non funziona.

    Qualsiasi suggerimento è ben accetto, perchè purtroppo è anche piuttosto urgente

    Grazie in anticipo per aver letto tutto questo 3D.
    Ciao

  2. #2
    per nuovo popolamento dell'"elemento" select intendi quando ricarichi la pagina?
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Si.

    Posto anche il codice (asp/javascritp) della listboxtipolist.asp

    codice:
    <script LANGUAGE="JavaScript">
    function addOptionToOpener(Listbox, Text, Value)
    {
      var oOption = self.opener.document.createElement("option");
       Listbox.appendChild(oOption);
       oOption.value = Text;
       oOption.text = Text;
    }
    </script>
    
    
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Ricerca</title>
    <script language="javascript">
    function checkCommit()
    {
    
     document.datiform.vc_flagconf.value='S';
     document.datiform.submit();
    }
    </script>
    
    </script>
    
    
    </head>
    
    <body bgcolor="#f0f0f0">
    <%
    	vc_user = session("vc_userprop")
    	Dim strURL
    	Dim con
    	Dim rs
    	Dim strDBPath
    	Dim sql
    
    	vc_userconn =session("vc_userprop")
    
    	if vc_userconn =""  then
    		response.redirect "timeoutt.asp"
    	end if
    
    	vc_flagconf = Request.QueryString("vc_flagconf")
    	strSearch = Request.QueryString("search")
    	strSearch = Replace(strSearch, "'", "''")
    	strSearchcomu = Request.QueryString("searchcomu")
    	strSearchcomu = Replace(strSearchcomu, "'", "''")
    
    	if vc_flagconf <> "S" then
    	    Set rs = Server.CreateObject("ADODB.Recordset")
    	    Set cn = Server.CreateObject("ADODB.Connection")
    	    cn.Open  application("ConnDB")
    
    		Set con = Server.CreateObject("ADODB.Connection")
    		con.Open  application("ConnDB")
    
    
    
    		SQL = "SELECT 	.... "
    
        	Set rs = con.Execute(sql)
    
    %>
    		<form name="datiform" action="<%= strURL %>?vc_flagconf=S" method="get">
    		<table border="0" width="100%">
    			  <tr>
    			    <td width="20%" class="titololista">Denominazione:</td>
    			    <td width="50%">
    			    <input name="search"  class="campinotnull" value="<%= strSearch %>" size="30" />
    			    </td>
    			  </tr>
    			  <tr>
    			    <td width="20%" class="titololista">Comune</td>
    			    <td width="50%"><input name="searchcomu"  class="campinotnull" value="<%= strSearchcomu %>" size="30" /></td>
    			  </tr>
      			<tr>
       				<td width="100%" colspan="2" align="center">
    					<input type="submit" value="Ricerca" onClick="Modulo()" class="campiform" onMouseOver="this.className='campiform2'" onmouseOut="this.className='campiform'" />
    					<input type="submit" onClick="javascript:checkCommit()"  value="Conferma" class="campiform">
    		   			<input type="hidden" name="vc_flagconf" value="N">
    		       </td>
    		     </tr>
    		   </table>
    
    <%
        		if not rs.EOF then
    %>
    				<table border="1">
    				<tr>
    					<th class=testolabel>Descrizione</th>
    					<th class=testolabel></th>
    				</tr>
    <%
    			Do While Not rs.EOF
    				id = rs("CODI_ENTE")
    %>
    				<tr >
    					<td valign="top" class=testolista>
    						<%= rs("DESC_DENO_ENTE") %>
    					</td>
    					<td valign="top" class=testolista>
    						<input type="checkbox" name="record_<%=id%>" value="<%=id%>">
    					</td>
    				</tr>
    <%
    			rs.MoveNext
    			Loop
    %>
    
    			</table>
    			<p align="center">
    				<input type="submit" onClick="javascript:checkCommit()"  value="Conferma" class="campiform">
    			</p>
    <%
    			else
    %>
    			<p class="errori" >
    				Non risultano dati
    			</p>
    
    <%
    			end if
    %>
    
    			<table>
    			</form>
    <%
    	else
    %>
    
    	<form name="datiform" action="<%= strURL %>?vc_flagconf=S" method="get">
    <%
    
    	strSearch = Replace(strSearch, "''''", "''")
    	strSearchcomu = Replace(strSearchcomu, "''''", "''")
    
    
    
    	Set con = Server.CreateObject("ADODB.Connection")
    	con.Open  application("ConnDB")
    
    		SQL = "SELECT 	.... "
    
    
    	vc_listcodicapo=""
    	vc_listcodidann=""
    
    	Set rs = con.Execute(sql)
    
    	i=0
        if not rs.EOF then
    
    		Do While Not rs.EOF
    			record = request("record_" & rs("CODI_ENTE"))
    			'Visualizzo i prodotti selezionati
    
    			if len(record) <> 0 then
    				i=i+1
    				vc_listcodicapo=rs("CODI_ENTE")
    				vc_listcodidann=rs("DESC_DENO_ENTE")
    
    %>
    
    				<script language="JavaScript">
    					addOptionToOpener(self.opener.document.datiform.CODI_ENTE_LIST, '<%=Replace(vc_listcodidann,"'","\'",1)%>', '<%=vc_listcodicapo%>');
    				</script>
    <%
    			end if
    		rs.MoveNext
    		Loop
    	end if
    
    %>
    	<script language="JavaScript">
    		this.close();
    	</script>
    
    	</form>
    <%
    	end if
    %>
    </body>
    Grazie intanto per la risposta.
    Ciao

  4. #4
    Senti, mi spiace, ma sarà l'ora, sarà che chiami le cose con nomi diversi, ma non capisco assolutamente di cosa hai bisogno.

    Devi eseguire una funzione ad un determinato momento, ma a quale? e che intendi per concatenare le option delle select?
    I DON'T Double Click!

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da artorius
    Senti, mi spiace, ma sarà l'ora, sarà che chiami le cose con nomi diversi, ma non capisco assolutamente di cosa hai bisogno.

    Devi eseguire una funzione ad un determinato momento, ma a quale? e che intendi per concatenare le option delle select?
    Allora, ci riprovo. Sicuramente mi sono sbagliato a spiegare il problema.

    Ogniqualvolta inserisco, attraverso la lista valori, uno o più valori nel "select", si attivi la funzione javascript che concateni tali valori presenti al momento nel campo select e li renda "disponibili" al form se clicco su submit. (attualmente questo meccanismo funziona solo se, dopo aver inserito uno più valori, ne seleziono/clicco su uno nel "select". Questo accade perchè scatta la funzione all'onchange).

    Spero di essermi spiegato stavolta.

    La fretta e l'urgenza non permette di essere troppo chiaro a volte.

    Scusate.
    Ciao e grazie ancora per la disponibilità

  6. #6
    ah, allora devi chiamare la funzione formlistenti sull'evento onsubmit della form, in modo che, prima di lanciare la form la esegua.

    N.B. Questo potrebbe rendere inutile averla sull'onchange della select, se ho capito cosa fa quella funzione
    I DON'T Double Click!

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da artorius
    ah, allora devi chiamare la funzione formlistenti sull'evento onsubmit della form, in modo che, prima di lanciare la form la esegua.

    N.B. Questo potrebbe rendere inutile averla sull'onchange della select, se ho capito cosa fa quella funzione
    Scusa se ti rispondo solo ora.
    Credo che sia la soluzione giusta. Domani la provo e poi vi faccio sapere.

    grazie
    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Grazie del suggerimento.
    Ho modificato semplicemente così e va benissimo.

    codice:
    function checkCommit()
    {
        if (document.datiform.CODI_ENTE_LIST.options.length > 0)
        {
    		formlistenti();
    	}
    
    
     	document.datiform.submit();
    }

    Grazie
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.