Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    91

    Popup da "select onchange"

    Ciao, avrei bisogno di far aprire in una finestra popup la scelta che l'utente opera in un ambito select. Per spiegarmi meglio, ora conosco due possibilità:

    <select onchange="location.href=this.value;" >
    <option value="null">Seleziona una voce</option>
    <option value="A.html">Prima</option>
    <option value="B.html">Seconda</option>
    <option value="C.html">Terza</option>
    </select>

    che apre nella stessa finestra; oppure

    <select onchange="window.open(this.value);">
    <option value="null">Seleziona una voce</option>
    <option value="A.html">Prima</option>
    <option value="B.html">Seconda</option>
    <option value="C.html">Terza</option>
    </select>

    che apre una nuova pagina.
    Quale tag dovrei inserire per far sì che le pagine A,B,C si aprano in un popup a larghezza (e magari posizione) prefissata?
    Grazie

  2. #2
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Sei già sulla strada.
    Puoi completare window.open(this.value); con dimesioni/posizione/caratteristiche.

    Per intenderci, window.open può venire accompagnato da una, due o tre coppie di apici, singoli o doppi; ogni coppia è deputata a raccogliere, nell' ordine:
    - url/path da caricare nella pop-up window:
    - nome della window;
    - dimensioni e caratteristiche;

    window.open(this.value, "", "width=300, height=250, left=100, top=50, resizable=yes, scrollbars=yes");

    Però se nell' onchange="" già usi gli apici doppi, adopera gli apici singoli ' nel window.open -o- viceversa; altrimenti, interferiscono.
    Come pure, puoi far passare il comando per una function

    Se trattiamo variabili o istruzioni già in JS, allora niente apici; come è il caso di this.value
    Gli apici, nel caso di "valore reale", roba da essere interpretata tal-quale come "caratteri di testo"; stringa, come si dice nello specifico.

    Questo post non vuole essere esaustivo di tutta la faccenda ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    91
    Caspita, grazie mille, sei stato molto dettagliato!
    Appena vado a casa provo. Intanto ti espongo un problema che ieri sera mi capitava con la funzione window.open: quando chiudevo la nuova pagina che si apriva, nella pagina principale la selezione rimaneva ovviamente sulla stringa scelata (ad es. "Prima") e se io, anzichè sceglierne un'altra, sceglievo di cliccare su "seleziona una voce" (tipo per resettare il modulo) pur essendoci l'atributo "null" mi apriva una pagina con scritto "pagina non trovata" perchè appunto cercava una pagina che si chiamasse null.
    È possibile evitare questo evento?
    Ciao e grazie ancora!

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    91
    Ho provato, funziona alla grande, grazie.

    Rimane quel "problema" di cui accennavo, ho provato a togliere "null" ma mi apre una pagina blank...

  5. #5
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Codifichiamo le istruzioni JS in una function che poi invocheremo all' onchange.
    Lo schema elementare sarebbe questo, l' url da caricare in pop-up lo recuperiamo ancora come .value restituito dalla SELECT, ma ora lo passiamo alla function (ecco a cosa servono le parentesi () tonde !!), dove viene raccolto e "veicolato" con un termine/parola di servizio: dove veicolato nell' istruzione da eseguire, una window.open() nel nostro caso:
    codice:
    <script>
    
    function apriFinestra(dove){
    
            window.open(dove, "", "width=380, height=260, left=100, top=50, resizable=yes, scrollbars=yes");
    
     }
    
    </script>
    
    <select onchange="apriFinestra(this.value);">
    
     <option value="null">Seleziona una voce</option>
     <option value="http://www.mozilla.com/">Prima </option>
     <option value="http://www.google.com/">Seconda</option>
     <option value="C.html">Terza</option>
    </select>
    Ora inseriamo anche un if-statement che "soppesa" dove e se (if) riscontra che dove si traduce in "null" ("" stringa), non esegue niente e l' azione finisce qui, essendo vuote le { } che sono appunto deputate a contenere l' eseguibile, come le () contengono l' ipotesi; altrimenti (else) danno esecuzione a ... quello che c'è tra la associata coppia di { }
    codice:
    <!DOCTYPE html PUBLIC>
    <html>
    <head><title>9sedici 's pop-up</title>
    
    <script type="text/javascript">
    
    function apriFinestra(dove){
    
         if(dove=="null"){
            //esegue niente
     } else {
            window.open(dove, "", "width=380, height=260, left=100, top=50, resizable=yes, scrollbars=yes");
     };
    
     }
    
    </script>
    
    </head><body bgcolor="#90EE90">
    
    <select onchange="apriFinestra(this.value);">
    
     <option value="null">Seleziona una voce</option>
     <option value="http://www.mozilla.com/">Prima </option>
     <option value="http://www.google.com/">Seconda</option>
     <option value="C.html">Terza</option>
    </select>
    
    
    </body>
    </html>
    IF-Statement

    if ( ipotesi da verificare ){ istruzioni da eseguire se e solo se l' ipotesi è risultata vera };

    Attenzione a non adoperare il semplice = nell' ipotesi, perché:

    = rende uguale, sempre, anche tra le ()
    == compara se c'è uguaglianza.

    Attenzione anche a non trascinarsi coi copia-incolla, il semicolon ; tre le () che NON deve concludere un' ipotesi. Un' occorrenza di questo tipo, che può capitare e passare inosservata, blocca tutto lo script !!


    Più if-else Statements possono essere strutturati in cascata.

    Ti ho messo alcuni termini in Italiano nel Codice, che evidenziano dove la terminologia è lasciata alla nostra inventiva/necessità; ma sempre evitando caratteri invalidi.

    Lettere e/o Numeri
    l' underscore _ e il dollar sign $ come unici caratteri speciali ammessi
    la nominazione NON deve cominciare con un carattere numerico.
    Rispetto di maiuscole/minuscole (JS è case-sensitive).


  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    91
    Cosa dire, sei l'interlocutore che ognuno si augura! Grazie, funziona perfettamente.

    Visto che abbiamo introdotto il JS, sarei tentato di centrare il popup nello schermo (indipendentemente dalla risoluzione), adattando comandi che senza campo "select" ero riuscito a far funzionare, ma qui non riesco. Ho tentato:

    -------------------------------
    <script type="text/javascript">

    function apriFinestra(dove,w,h){

    var l = Math.floor((screen.width-w)/2);
    var t = Math.floor((screen.height-h)/2);
    var stile = "top="+t+", left="+l+", width="+w+", height="+h+", status=no, menubar=no, toolbar=no, scrollbars=yes, location=no";

    if(dove=="null"){
    //esegue niente
    } else {
    window.open(dove, stile);

    };

    }

    </script>

    ------------Oppure:--------------

    <script type="text/javascript">
    var win = null;
    function apriFinestra(dove,w,h,scroll){

    LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
    TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
    settings =
    'height='+h+',width='+w+',top='+TopPosition+',left ='+LeftPosition+',scrollbars='+scroll+',resizable'

    if(dove=="null"){
    //esegue niente
    } else {
    window.open(dove, settings)
    if(win.window.focus){win.window.focus();}

    };

    }

    </script>
    -------------------------------------------
    Richiamando in entrambe i casi:
    <select onchange="apriFinestra(this.value, '350', '300');">

    ma mi apre una nuova pagina. Dove sbaglio?
    Grazie ancora, ciao!

  7. #7
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Originariamente inviato da Enzaccio
    Per intenderci, window.open può venire accompagnato da una, due o tre coppie di apici, singoli o doppi; ogni coppia è deputata a raccogliere, nell' ordine:
    - url/path da caricare nella pop-up window:
    - nome della window;
    - dimensioni e caratteristiche;
    window.open(dove, stile); presume che con stile le stai passando il nome della popup.
    Quindi:
    window.open(dove, "", stile);

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    91
    E come al solito funziona perfettamente. Grazie infinite!

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