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

    salvare il contenuto di alcuni campi testo

    Buon giorno a tutti ho questo problema dal quale non riesco ad uscirne.
    Cerco di essere chiaro nella spiegazione.
    Ho una pagina .asp chiamata domanda.asp dove ci sono 2 campi di tipo testo che si chiamano "oggetto" e "testo"; in questa pagina poi c'è un bottone che richiama tramite windows.open un'altra pagina dove un utente può ricercare degli articoli..... una volta trovato l'articolo quando il cliente clicca su aggiungi questo articolo viene aggiunto alla pagina precedente ovvero viene aggiunto a domanda.asp e viene aggiunto a domanda.asp richiamando la pagina con redirect.
    Il problema che ho è questo: se un utente scrive nei campi testo "oggetto" e "testo" poi cerca un articolo e lo aggiunge, quando la pagina domanda.asp è richiamata con il redirect per inserire l'articolo, questa si richiama completamente e io perdo quello che è stato scritto sui campi testo.
    Per cercare di essere chiaro provate a creare una pagina con 2 soli campi testo poi mettete un bottone che con windows.open apre un'altra pagina e su quest'altra pagina altro bottone che windows.open richiama la precedente.... vedete che se io scrivo nei campi testo e poi faccio questa procedura di avanti e indietro i campi testo si svuotano.
    Come posso salvare quello che è stato scritto su quei campi testo in modo che anche se ci sono tanti redirect a quella pagina non vada mai perso?

    Aiuto per favore!!

  2. #2
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    append URL and split() function

    ( windows.open non è corretto ).

    Per non far dissolvere i contenuti di quei campi di testo, un metodo può essere "tirarseli dietro" da pagina a pagina appesi agli URL.

    Avrai notato che si incontrano degli URL "allungati" dopo l' estensione, da ? e da & accompagnate da stringhe di testo, che costituiscono variabili inviate e recuperate tra le pagine.
    È quello che in PHP viene chiamato metodo GET
    in JavaScript analogamente, si può facilmente eseguire la concatenazione + sull' URL richiamato da window.open (invio), e gestire il recupero con la funzione split() applicata alla window.location.href dalla pagina di destinazione.

    Ti ho sviluppato la prima parte:
    file domanda.htm
    codice:
    <!DOCTYPE html PUBLIC>
    <html>
    <head><title>domanda</title>
    
    <script type="text/javascript">
    
    function itemize(){
     window.open('articoli.htm?'+document.forms[0].elements["oggetto"].value+'?'+document.forms[0].elements["testo"].value);
     }
    
    </script>
    
    </head><body onload="collect();">
    
    <div align="center">
    <form>
    <table border="0" cellpadding="0" cellspacin="0">
    <tr><td>Oggetto:</td><td><input name="oggetto" value="" type="text"></td></tr>
    <tr><td>Testo:  </td><td><input name="testo"   value="" type="text"></td></tr>
    <tr><td>&#38;nbsp;  </td><td><input value="vedi articoli"   type="button" onclick="itemize();"></td></tr>
    </table>
    </form>
    </div>
    
    </body>
    </html>
    Esiste già nel Tag BODY un richiamo onload ad una funzione collect() che per ora non ti ho definito, che servirà al recupero di ritorno.
    Per ora, fai un file articoli.htm ed osserva l' URL "in uscita" che ti ritrovi, una volta che le textbox contengono qualcosa ...
    In articoli.htm l' onclick sul pulsante di ritorno a domanda.htm dovrà richiamare una funzione di questo tipo:
    codice:
    function relist(){
     loc = window.location.href;
     app=loc.split("?");
     alert(app);
     window.open('domanda.htm?'+app[1]+'?'+app[2]);
    }
    alert(app); è a scopo dimostrativo.
    E ci ritroviamo le nostre stringhe ancora conservate in questa seconda uscita/invio.

    Un problema lo fanno sorgere i caratteri accentati, però ...

  3. #3
    si ho visto che passa il tutto nella barra dell'indirizzo........

    io l'avrei modificato così per asp

    pagina prima:
    codice:
    <script type="text/javascript">  function itemize(){  window.open('prova2.asp?oggetto='+document.forms[0].elements["oggetto"].value+'&testo='+document.forms[0].elements["testo"].value);  }  </script>
    pagina seconda:
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% dim oggetto, testo oggetto = request.QueryString("oggetto") testo = request.QueryString("testo") %>
    e me li legge correttamente....

    la tua quale soluzione era??

    Grazie cmq sei stato gentilissimo

  4. #4
    Funziona abbastanza bene mi mancano solo 2 cose:

    1) se invece che un campo di testo fosse una textarea ho visto che riporta tutto, compresi gli spazi ma non i vado a capo, si possono inserire anche quelli ??

    2) questo esempio l'ho adattato alla mia necessita.... cerco di spiegarti però.
    io ho un link che dovrebbe fare la cosa ma associato a questo link c'è anche un altro richiamo alla stessa pagina o meglio questo è il link:
    codice:
    ">Rimuovi
    al quale dovrei legarci il discorso del javascript document.forms[0].elements["annotaz"].value

    mentre la parte asp dove viene richiamata la pagina è questa:

    codice:
    <%  If (CStr(Request.QueryString("RemoveCartItem")) <> "") Then 	 	UltraCart.CleanRedirect ""  End If %>
    Per farti capire io credo siano 2 redirect, ovvero una persona clicca su link e viene chiamata la "pagina" contenuta nel tag a href che è la stessa pagina solo con delle variabili all'interno.
    La pagina si compila e siccome RemoveCartItem ha un valore si compila anche la parte ASP che fa un altro redirect alla stessa pagina.

    Come faccio io ad avere come valore finale "pagina.asp?testo=quello che era stato scritto nella prima pagina nel campo testo"

    grazie dell'aiuto

  5. #5
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Originariamente inviato da mpr79
    la tua quale soluzione era??
    Il mio svolgimento rimaneva in puro JavaScript, "isolando" il problema come da tua esemplificazione:
    Originariamente inviato da mpr79
    .. provate a creare una pagina con 2 soli campi testo poi mettete un bottone che con windows.open apre un'altra pagina e su quest'altra pagina altro bottone che windows.open richiama la precedente .... i campi di testo si svuotano.
    Come posso salvare quello che è stato scritto ...
    non integrando la parte in ASP per la scelta dell' articolo (da Array o Database ?), la conclusione con l' invio (suppongo) di un FORM, eccetera eccetera.

    Per cui, il mio file domanda.htm andava completato con la funzione:
    codice:
    var col = window.location.href.split('?');
    alert(col);
    
    function collect(){
     if(col.length>2){
     document.forms[0].elements["oggetto"].value=col[1];
     document.forms[0].elements["testo"].value = col[2];
     };
    }
    per il recupero finale dei testi dall' URL conclusivo (venendo da articoli.htm).
    La funzione nativa JS split() restituisce un Array, i cui articoli trovi separati da virgola nell' alert() dimostrativo; in pratica, il carattere di split ? te lo ritrovi sostituito da una virgola.
    L' Array lo abbiamo chiamato col
    Gli Array iniziando a contare da zero, col[0] raccoglie la prima parte dell' URL

    htt&#112;://tuodominio.com/cartella/domanda.htm?campooggetto?campotesto

    per cui, per il nostro scopo utilizziamo col[1] e col[2]


    La function collect() funziona anche nella sua forma più primitiva:

    function collect(){

    &#160;document.forms[0].elements["oggetto"].value=col[1];
    &#160;document.forms[0].elements["testo"].value = col[2];

    }

    senonché ti stamperebbe undefined nei campi, se accedi alla pagina da barra indirizzi / bookmarks senza avere i ?? dopo l' estensione .htm
    Per cui ho aggiunto un if-statement che controlla se esistono elementi sufficienti in quell' Array (lunghezza dell' Array).


    Ora, nel "rimpallo" tra le pagine non so bene cos' altro debba avvenire: ci sarà la possibiltà che tu faccia eseguire/stampare detti contenuti in ASP recuperando da variabili JS che poi abbandoni.
    Vedremo ...

  6. #6
    Una domanda.....

    io ho modificato la funzione in base a quello che ci devo fare in questo modo:

    codice:
    <script type="text/javascript">
    function riprendi(){
     window.open('ricambioinspr.asp?annotaz='+document.forms[0].elements["annotaz"].value+'&RemoveCartItem=<%= UltraCart_i %>' ,'_self');
     }
    </script>

    Ora il mio campo testo "annotaz" è una textarea e mi riporta il suo valore in modo perfetto.
    Ma la domanda è questa:
    siccome è una textarea è possibile in essa andare a capo, ma è possibile modificare la funzione in modo che riporti il testo ma anche eventuali "a capo" ???

    faccio un esempio se il campo fosse un semplice testo e io dentro ci scrivo "ciao mamma" lui mi riporta esattamente "ciao mamma" ma se il campo fosse una textarea e io ci scrivo "ciao vado a capo mamma" lui mi riporta sempre "ciao mamma" e non
    "ciao
    mamma"

    è una cosa fattibile questa?

  7. #7
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    encodeURI() decodeURI() native functions for URL Encoding Reference

    \n forza il ritorno di riga in una stringa di testo, ed è quello che dobbiamo far ri-avere alla textarea al secondo passaggio.

    alert(document.forms[0].elements["annotaz"].value.match(/\n/gi).length);

    messo nella function infatti, ti conta gli \n come caratteri presenti nella textarea anche se visivamente non appaiono.

    Quindi al primo invio, dobbiamo far inserire nella query string "un qualcosa" che poi si traduca in \n nei posti giusti; \n direttamente non funziona (puoi provare ad inserirlo manualmente nell' URL e ricaricare la pagina): la query string accetta solo caratteri che siano validi caratteri URL.

    Dovrà avvenire qualcosa come quando vuoi inviare una vocale accentata (te ne avevo già appena accennato): il Browser te la traduce in barra indirizzi secondo una codifica ( è ti diventa %E8 ), ma altrettanto automaticamente non fa per \n . E poi, bisognerà pur sempre eseguire una codifica inversa all' arrivo altrimenti, %E8 continuerà a visualizzarsi come %E8

    JavaScript mette a disposizione le funzioni native encodeURI() e decodeURI() per gestire l' intera faccenda; ti preparo un esempio pratico più tardi.

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.