Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Gestione componenti fra due pagine

    Salve a tutti,
    ho due pagine che hanno lo stesso form. Popolando il primo form e premendo il pulsante calcola, dovrei popolare il secondo form con le informazioni del primo e premere il pulsante calcola del secondo form.
    Vi posto un pezzo del codice per mostrare come sto ragionando.
    codice:
    var partenza = document.getElementById('selectRicercaRapidaHomePartenza').value;
        var destinazione = document.getElementById("selectRicercaRapidaHomeDestinazione").value;
        var data =  document.getElementById("RicercaRapidaHomeData").value;
        var orario =  document.getElementById("RicercaRapidaHomeOrario").value;
        if(data == ""){
          alert("Inserire data!");
          return;
        }
        if(orario == ""){
          alert("Inserire orario!");
          return;
        }
        
        // dato che ora ho i valori, li devo solo mettere al posto giusto
        document.location = "Seconda pagina";
    Tutto ciò che scrivo dopo il document.location non funziona. Perché?

    Attendo risposte

    - DL

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, sicuramente mi sto perdendo qualcosa ma non capisco il senso di avere le due pagine in cui devi riportare lo stesso form.
    Tutto ciò che scrivo dopo il document.location non funziona. Perché?
    In realtà sta funzionando. Cioè lo script che scrivi dopo document.location viene comunque eseguito, almeno fino a quando non avviene il reindirizzamento alla nuova pagina. Ad ogni modo, nel momento in cui la nuova pagina viene caricata, tutti i dati e le variabili esistenti nella vecchia pagina, di norma vengono persi. In generale, lo script eseguito su una specifica pagina non si propaga sulla nuova pagina che viene caricata. Questo è il normale funzionamento.

    Per passare dei dati da una pagina .html ad un'altra puoi usare svariati sistemi.

    Un metodo semplice è quello di passare i dati via GET cosi come avverrebbe normalmente al submit di un form con l'attributo method impostato su GET. Questo significa che i dati li ritroverai sotto forma di query string nell'URL della nuova pagina. A quel punto potrai recuperarli attraverso JavaScript.

    Ti posto un esempio pratico.

    Questo è il tuo file pagina_a.html:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
        <script type="text/javascript">
        function validaForm(form){
          var partenza = form.selectRicercaRapidaHomePartenza.value
            , destinazione = form.selectRicercaRapidaHomeDestinazione.value
            , data = form.RicercaRapidaHomeData.value
            , orario = form.RicercaRapidaHomeOrario.value
          ;
          if (data == "") { alert("Inserire data!"); return false; }
          if (orario == "") { alert("Inserire orario!"); return false; }
        }
        </script>
      </head>
      <body>
        <h1>PAGINA A</h1>
        <form action="pagina_b.html" method="get"  onsubmit="return validaForm(this)">
          <input name="selectRicercaRapidaHomePartenza">
          <input name="selectRicercaRapidaHomeDestinazione">
          <input name="RicercaRapidaHomeData">
          <input name="RicercaRapidaHomeOrario">
          <input type="submit" value="Calcola">
        </form>
      </body>
    </html>
    Questo invece è pagina_b.html:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
      </head>
      <body>
        <h1>PAGINA B</h1>
        <form id="tuoForm" action="#" method="post">
          <input name="selectRicercaRapidaHomePartenza">
          <input name="selectRicercaRapidaHomeDestinazione">
          <input name="RicercaRapidaHomeData">
          <input name="RicercaRapidaHomeOrario">
          <input type="submit" value="Calcola">
        </form>
        <script type="text/javascript">
        (function(){
          var query = window.location.search.substring(1).split("&")
            , i = query.length
            , dati={}
            , el
          ;
          while (i--){
            el = query[i].split("=");
            dati[el[0]] = el[1];
          }
          var partenza = dati.selectRicercaRapidaHomePartenza
            , destinazione = dati.selectRicercaRapidaHomeDestinazione
            , data = dati.RicercaRapidaHomeData
            , orario = dati.RicercaRapidaHomeOrario
            , form = document.getElementById('tuoForm')
          ;
          form.selectRicercaRapidaHomePartenza.value = partenza
          form.selectRicercaRapidaHomeDestinazione.value = destinazione
          form.RicercaRapidaHomeData.value = data
          form.RicercaRapidaHomeOrario.value = orario
        })();
        </script>
      </body>
    </html>
    La sintassi JavaScript è abbastanza ottimizzata e sintettica ma chiaramente è solo un esempio che puoi prendere come spunto e rielaborare secondo il tuo metodo di programmazione o come meglio preferisci.

    Un sistema più pulito (a livello di utilizzo), ma anche più complesso (a livello di sviluppo), potrebbe essere quello di caricare i vari form (o comunque i contenuti delle pagine) attraverso AJAX (meglio se utilizzando jQuery). A quel punto non avrai bisogno di eseguire dei reindirizzamenti da una pagina all'altra, quindi tutti i dati li avrai sempre disponibili e manipolabili da script.

    Oppure usare un iframe.

    Ancora, potresti passare i dati memorizzandoli attraverso dei cookie o, meglio ancora, attraverso localstorage e sessionstorage (nuove funzionalità di HTML5) con cui si possono immagazzinare dati lato client e gestirli facilmente via script.

    Esistono anche svariate librerie con cui sono implementate queste funzionalita. Qui un archivio: https://github.com/bebraw/jswiki/wiki/Storage-libraries

    A te la scelta.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Grazie mille *-*
    Penso che userò i cookie poiché la mia situazione è un po' intrecciata quindi mandare dati con la GET potrebbe darmi problemi.
    Entro oggi pomeriggio faccio sapere se ci sono riuscito oppure no
    Grazie ancora.

    - DL

  4. #4
    Grazie ancora. I cookie non funzionavano quindi ho usato la GET.
    Per me potete chiudere. Grazie

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.