Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    Campo nascosto in form pagina madre

    Ciao.

    Questa è una pagina htm che contiene un form aperto in popUp che ricopia, in un campo nascosto chiamato "tec", dei dati all'interno di un altro form aperto nella pagina madre.

    codice:
    <script language="Javascript">
    
    <!--
    
    function insertf1(f1) {
       
       if ( FORM1.tec.value.length > 0 && FORM1.opr.value.length > 0 ) {
            window.opener.document.FORM1.tec.value=f1;
            alert("Dati correttamente salvati.");
            window.close();
    
        } else {
        
            alert("Dati obbligatori."); 
            FORM1.tec.focus(); 
    
       }
       
    }
       
    // -->
    </script>
    </head>
    
    <body>
    
    <form name="FORM1">
    
    <select size="15" name="tec" multiple>
    
    <option>Seleziona</option>
    <option value="GABRIELE">GABRIELE</option>                   
    <option value="GIUSEPPE">GIUSEPPE</option>
    <option value="DOMENICO">DOMENICO</option>
    
    </select> 
    
    
    <select size="15" name="opr" multiple>
    <option>Seleziona</option>
    <option value="GIOVANNI">GIOVANNI/option>                   
    <option value="GIACOMO">GIACOMO</option>
    <option value="DOROTEO">DOROTEO</option>
    
    </select>
    
    
    <a href="javascript:insertf1(document.FORM1.tec.value+';'+document.FORM1.opr.value);">            
    [img]salva.gif[/img]
    Come si può vedere le select previste nel form della pagina figlia aperta in popup consentono la selezione di più nominativi contemporaneamente ( attributo multiple in select).

    La cosa strana che pur selezionando più nominativi dalle select quelli che si ricopiano nel campo nascosto chiamato "tec", del form pagina madre, sono sempre i primi selezionati, cioè:

    *** Quando seleziono da select tec valori gabriele e giuseppe nel form pagina figlia, nel campo nascosto chiamato "tec" del form pagina madre si ritrova soltanto il primo valore selezionato cioè gabriele.

    Questo è il campo nascosto chiamato "tec", dove si ricopiano i dati provenienti dal form pagina figlia, contenuto nel form pagina madre:

    codice:
    <INPUT TYPE="hidden" NAME="tec" VALUE="-;-">
    Cosa sbaglio?
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    codice:
        //------------------------------------------------------------
        //restituisce gli elementi value selezionati da una lista
        //separati da virgola
        //------------------------------------------------------------
        function options_value_selezionati_join(lista)
        {
    	    var s = "";
    	    for(var i = 0; i < lista.options.length; i++)
    	    {
    		    if(lista.options[i].selected) s += "," + lista.options[i].value;
    	    }
    	    return s.substr(1);
        }
    invece di mettere:
    document.FORM1.tec.value

    metti:
    options_value_selezionati_join(document.FORM1.tec)

    nota: non ho provato
    Pietro

  3. #3
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Grazie, ma non ho capito cosa devo fare:

    1) la funzione options_value_selezionati_join sostituisce la funzione insertf1(f1) ?

    2) options_value_selezionati_join(document.FORM1.tec) dove va inserito?: nella funzione insertf1(f1) o nell' href che inserisce i valori nel campo nascosto della pagina madre?

    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    document.FORM1.tec.value ==> ti restituisce il value primo selezionato


    se vuoi ottenere tutti gli elementi selezionati, prova ad usare quella funzione, che ti restituirà i value selezionati separati da ,
    Pietro

  5. #5
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Grazie adesso ho capito e funziona: ho solo un problema quando clicco sul pulsante salva invece di chiudersi la popup mi ritrovo stampati i nome che ho appena scelto nella select...:

    codice:
    <script language="Javascript">
    
    <!--
        //------------------------------------------------------------
        //restituisce gli elementi value selezionati da una lista
        //separati da virgola
        //------------------------------------------------------------
        
        function options_value_selezionati_join(lista)
        {
    	    var s = "";
    	    for(var i = 0; i < lista.options.length; i++)
    	    {
    		    if(lista.options[i].selected) s += "," + lista.options[i].value;
    	    }
    	    
    	    return s.substr(1);
    	    
        }
    
    
       
    // -->
    </script>
    
    ...
    
    
    <a href="javascript : (options_value_selezionati_join(document.FORM1.tec)+';'+options_value_selezionati_join(document.FORM1.opr));">
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  6. #6
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    No, non funziona...

    I valori non passano dal form pagina figlia al campo nascosto del form della pagina madre...
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  7. #7
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Allora così passo i dati al campo nascosto del form pagina madre:

    codice:
        function options_value_selezionati_join(lista)
        {
    	    
    	    var s = "";
    	    for(var i = 0; i < lista.options.length; i++)
    	    
    	    {
    
    		    if(lista.options[i].selected) s += "-" + lista.options[i].value;
    
      	    }         	    
                    
                    window.opener.document.FORM1.tec.value = s;   
                    alert("OK.");
                    window.close();  
          
       
    	    
       }
    
    ...
    Ma il problema è qui:

    codice:
    <a href="javascript:options_value_selezionati_join(document.FORM1.tec+';'+document.FORM1.opr);">
    Quando provo a salvare mi appare il msg allegato.
    Perchè???
    Immagini allegate Immagini allegate
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Untitled Page</title>
    
        <script language="javascript" type="text/javascript">
    // <!CDATA[
        //------------------------------------------------------------
        //restituisce gli elementi value selezionati da una lista
        //separati da virgola
        //------------------------------------------------------------
        function options_value_selezionati_join(lista)
        {
    	    var s = "";
    	    for(var i = 0; i < lista.options.length; i++)
    	    {
    		    if(lista.options[i].selected) s += "," + lista.options[i].value;
    	    }
    	    return s.substr(1);
        }
    
    function spedisci()
    {
        var s = options_value_selezionati_join(document.FORM1.tec)
        + ";" + options_value_selezionati_join(document.FORM1.opr);
        alert(s);
        if(window.opener && window.opener.document.FORM1.tec) window.opener.document.FORM1.tec.value = s;   
        window.close();
    }
    
    
    
    // ]]>
    </script>
    
    </head>
    <body>
        <form name="FORM1">
        <select size="15" name="tec" multiple>
            <option>Seleziona</option>
            <option value="GABRIELE">GABRIELE</option>
            <option value="GIUSEPPE">GIUSEPPE</option>
            <option value="DOMENICO">DOMENICO</option>
        </select>
        <select size="15" name="opr" multiple>
            <option>Seleziona</option>
            <option value="GIOVANNI">GIOVANNI</option>
            <option value="GIACOMO">GIACOMO</option>
            <option value="DOROTEO">DOROTEO</option>
        </select>
        </form>
        
        xxxxx
        
    </body>
    </html>
    Pietro

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Non prendertela, ma fai errori che devi correggere. Una funzione, se vuoi che sia riutilizzabile, deve essere il più generale possibile.

    Se tu dentro options_value_selezionati_join() aggiungi altre istruzioni, queste non devono pregiudicare il funzionamento se richiamate da altre parti.

    Perciò, no ad aggiungere, per esempio, window.close(); (pregiugica il funzionamento se richiamata da altre pagine)

    ma puoi per esempio aggiungere questo:

    if( !(lista && lista.options.length) ) return;

    Ciao
    Pietro

  10. #10
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da pietro09
    Non prendertela, ma fai errori che devi correggere. Una funzione, se vuoi che sia riutilizzabile, deve essere il più generale possibile.

    Se tu dentro options_value_selezionati_join() aggiungi altre istruzioni, queste non devono pregiudicare il funzionamento se richiamate da altre parti.

    Perciò, no ad aggiungere, per esempio, window.close(); (pregiugica il funzionamento se richiamata da altre pagine)

    ma puoi per esempio aggiungere questo:

    if( !(lista && lista.options.length) ) return;

    Ciao
    ti ringrazio molto per la tua disponibilità e la spiegazione.

    Solo un'ultima richiesta: se non seleziono alcun nome della lista e clicco su salva dovrebbe aprirsi un avviso che richiede che almeno un valore dalla select sia obbligatorio, come posso fare?
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

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 © 2024 vBulletin Solutions, Inc. All rights reserved.