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

    Come ricordare i campi dei form

    Ciao a tutti

    Premesso che ho fatto un bel po' di ricerche, senza trovare il thread giusto, espongo brevemente il problema ai frequentatori abituali sperando che mi sappiano dare una dritta o un link.

    Il server è IIS. Ho un form d'ordine, da compilare alla fine del processo di scelta dei prodotti (carrello gestito con cookie), e mi piacerebbe usare l'onchange per memorizzare da qualche parte quanto digita il cliente nei vari campi del form finale. Lo scopo è il seguente: se il cliente ha già compilato una parte del modulo d'ordine e decide di lasciarlo in sospeso per andare ancora una volta a visualizzare i prodotti e fare eventuali aggiunte o modifiche al carrelo e poi ritornare al modulo d'ordine, deve trovare nel modulo suddetto i dati digitati in precedenza.

    Avevo provato con onchange + cookies, ma ottengo risultati deprecabili. Avevo infatti provato a settare un cookie ogni volta che il cliente compilava un campo (onchange). Ho però l'impressione che dopo un certo numero di cookies non ce ne stiano più e che il browser "cancelli" quelli più vecchi per far posto ai nuovi. Può essere?

    O forse sbaglio nella gestione dei cookies? Un cookie per ogni campo non va bene, ho forse modo di "matricizzare" il cookie e avere meno problemi?

    Avevo pensato alle "session" asp, ma non voglio ricaricare la pagina ASP ogni volta che viene attivato un onchange.

    Se avete bisogno dell'url sito per rendervi conto della cosa posso indicarvi il link.

    NB: non sono un programmatore professionista e non ho fatto corsi :-) sono un autodidatta per cui perdonate le eventuali ingenuità!

    Grazie
    Andrea

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Provo a dire la mia :master:

    Ragiono su un argomento semplificato.

    Ho una pagina a con dei campi.
    Li compilo tutti o in parte
    Posso o fare un submit o andare avanti - indietro
    se faccio il submit, non debbo ricordare niente
    se vado avanti, senza fare il submit, al ritorno debbo trovare quello già digitato

    se queste premesse sono valide:
    creo un cookie multiplo, nell'esempio semplificato ha nome carrello con i campi nome e numero.

    nell'evento onload leggo l'eventuale cookie e riempio i campi coi suoi valori

    nell'evento onsubmit rendo true una variabile globale che è normalmente falsa

    nell'evento onunload scrivo il cookie, ma lo valorizzerò a stringa nulla se è ho fatto il submit (varibile settata true) altrimenti valorizzo con i nomi dei campi


    non so, mi pare che funzioni

    se serve la paginetta di prova la mando
    Pietro

  3. #3
    Ciao, se provi a postarmi il codice te ne sarei grato.

    In effetti è come dici tu: quando NON faccio il submit, ma cambio pagina usando i normali link di navigazione, devo in qualche modo salvare i campi.

    Avevo provato a salvare i campi ognuno in un cookie, tipo

    nominativo = Andrea Mazzai
    indirizzo = ecc
    comune = ecc
    località = ecc

    ma con i risultati di cui hai letto in precedenza.

    Forse il problema sta nella mia malandata gestione dei cookie...

    Intanto grazie!
    Andrea

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    questa è la pagina di prova
    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>Pagina senza titolo</title>
        <script type="text/javascript" src="../../../../js/libreria.js"></script>
    
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    
    
    function window_onload() 
    {
        $("TextArea1").value = document.cookie;
        
        var carrello = getCookie( 'carrello' );
        if(carrello)
        {
            carrello = carrello.split("&");
            
            $("nome").value = carrello[0].split("=")[1];
            $("numero").value = carrello[1].split("=")[1];
        }
    
    }
    var IsSubmit = false;
    function window_onunload() 
    {
        var ck = "";
        if(!IsSubmit)
        {
            ck = "nome=" + escape($("nome").value) + "&" + "numero=" + escape($("numero").value);
        }
        setCookie( 'carrello', ck);
    }
    
    function form1_onsubmit() 
    {
        IsSubmit = true;
    }
    
    // ]]>
        </script>
    </head>
    <body onload="return window_onload()" onunload="return window_onunload()">
        b.htm
        <h1>a.htm</h1>
        <form id="form1" action="" onsubmit="return form1_onsubmit()">
            <table>
                <tr>
                    <td>nome</td>
                    <td><input id="nome" type="text" /></td>
                </tr>
                <tr>
                    <td>numero</td>
                    <td><input id="numero" type="text" /></td>
                </tr>
            </table>
            <hr />
            <input id="Submit1" type="submit" value="submit" />
            
    
    
                <textarea id="TextArea1" cols="60" rows="10"></textarea>
            </p>
        </form>
    </body>
    </html>

    queste sono le funzioni javascript richiamate
    codice:
    //al posto di mettere document.getElementById("div1"), mettere $("div1")
    //da prototype.js
    function $() 
    {
        var elements = new Array();
    
        for (var i = 0; i < arguments.length; i++) 
        {
            var element = arguments[i];
            if (typeof element == 'string')
                element = document.getElementById(element);
    
            if (arguments.length == 1)
                return element;
    
            elements.push(element);
        }
    
        return elements;
    }
    
    
    function getCookie( name ) {
    	var start = document.cookie.indexOf( name + "=" );
    	var len = start + name.length + 1;
    	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
    		return null;
    	}
    	if ( start == -1 ) return null;
    	var end = document.cookie.indexOf( ";", len );
    	if ( end == -1 ) end = document.cookie.length;
    	return unescape( document.cookie.substring( len, end ) );
    }
    	
    //expires in giorni o frazione di giorni: es. 3 ore = 3/24
    //chiamare con escape(value)
    function setCookie( name, value, expires, path, domain, secure ) {
    	var today = new Date();
    	today.setTime( today.getTime() );
    	if ( expires ) {
    		expires = expires * 1000 * 60 * 60 * 24;
    	}
    	var expires_date = new Date( today.getTime() + (expires) );
    	document.cookie = name+"="+( value ) +
    		( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
    		( ( path ) ? ";path=" + path : "" ) +
    		( ( domain ) ? ";domain=" + domain : "" ) +
    		( ( secure ) ? ";secure" : "" );
    }
    	
    function deleteCookie( name, path, domain ) {
    	if ( getCookie( name ) ) document.cookie = name + "=" +
    			( ( path ) ? ";path=" + path : "") +
    			( ( domain ) ? ";domain=" + domain : "" ) +
    			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
    }
    Pietro

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.