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

    Modificare e mantenere un certo "value" in campo input hidden

    Ciao ancora dal vostro "niubbo" di Javascript.
    Sono incappato in un problema penso piuttosto comune ai principianti...
    Sto provando a modificare il "value" di un campo nascosto sull'onClick di un submit,
    e ciò avviene, ma quando arrivo in fondo alla pagina il valore viene "resettato".
    Ora, è un problema comune o mi sfugge qualche fesseria?
    codice:
    <html>
        <head>
            <title>
    			CAMBIARE VALORE AD UN CAMPO NASCOSTO
    		</title>
    
            <script language="javaScript">
    			function modificaValoreMem(){
    				if(document.forms.login.mem.value=="NULLA" || document.forms.login.mem.value==""){
    					document.forms.login.mem.value="QUALCOSA";
    				}
    				else{
    					alert('GIA\' MODIFICATO!!!');
    				}
    				alert('Valore di MEM: '+document.forms.login.mem.value+' al click!');
    			}
    		</script>
        </head>
    
    <body>
    	<form METHOD="POST" id="login" name="login" action="#">CAMBIARE VALORE AD UN CAMPO NASCOSTO
    		</br>
    		<input type="hidden"	id="mem" name="mem" style="display:none"></input>
    		
    		<INPUT TYPE="SUBMIT" id="submit" name="submitLogin" value="Cambia valore" onClick="modificaValoreMem()"></input></br>
    		</br>
    	</form>
    	<script language="javaScript">
    		alert('Valore del campo MEM: "'+document.forms.login.mem.value+'" in fondo alla pagina');
    	</script> 
    </body>
    </html>

    In realtà sto provando a fare una pagina di "login" classica, in cui ho un form per user e pass,
    un input nascosto che dovrebbe mantenere traccia dello status del login ("SI" o "NO",inizialmente impostato a "NO"), e un terzo div che contiene un
    <INPUT TYPE="password" id="CurrLoggedFlag" name="CurrLoggedFlag" value="NO"></input>
    che dovrebbe visualizzare il nome dell'utente e il link per le opzioni utente e "disconnetti", inizialmente hidden.
    In pratica vorrei far inserire user e pass, se l'utente esiste il "CurrLoggedFlag" dovrebbe essere settato a "SI" e vorrei rendere hidden il primo form e rendere visible il terzo div.
    Sul "disconnetti" il CurrLoggedFlag ritorna a "NO".
    Il problema è che a fare lo fa, ma sul refresh della pagina premendo SUBMIT si resetta tutto!!! Quindi sto facendo varie prove tra cui questa!!!
    Quale cosuccia ignoro???
    GRazie in anticipo!!!
    "

  2. #2
    perchè non provi a mettere già value tra gli attributi di input (che è un tag che si autochiude, tra l'altro...)?

    Codice PHP:
    <input type="hidden"    id="mem" name="mem" style="display:none"  value="" /> 
    altrimenti prima di modificarlo potresti, potresti creare e settare direttamente l'attributo value di input con setAttribute


    ciao ciao!

  3. #3
    Innanzi tutto correggiamo gli errori:
    codice:
    <html>
        <head>
            <title>
    			CAMBIARE VALORE AD UN CAMPO NASCOSTO
    		</title>
    
            <script type="text/javascript">
    			function modificaValoreMem(){
    				if(document.forms.login.mem.value=="NULLA" || document.forms.login.mem.value==""){
    					document.forms.login.mem.value="QUALCOSA";
    				}
    				else{
    					alert("GIA' MODIFICATO!!!");
    				}
    				alert('Valore di MEM: '+document.forms.login.mem.value+' al click!');
    			}
    		</script>
        </head>
    
    <body>
    	<form METHOD="POST" id="login" name="login" action="#">CAMBIARE VALORE AD UN CAMPO NASCOSTO
    		</br>
    		<input type="hidden"	id="mem" name="mem" style="display:none"></input>
    		
    		<INPUT TYPE="SUBMIT" id="submit" name="submitLogin" value="Cambia valore" onClick="modificaValoreMem()"></input></br>
    		</br>
    	</form>
    	<script type="text/javascript">
    		alert('Valore del campo MEM: "'+document.forms.login.mem.value+'" in fondo alla pagina');
    	</script> 
    </body>
    </html>
    Errori:
    <script type="text/javascript"> e non <script language="javaScript">
    L'ultima sintassi &egrave; obsoleta.
    alert("GIA' MODIFICATO!!!"); e non alert('GIA' MODIFICATO!!!');
    Se racchiudi una stringa fra apici semplici, non ci puoi mettere dentro un apice semplice,
    indicherebbe al motore Javascript che la stringa finiscr l&igrave;, mentre invece continua!

    Spiegazione ...
    In realt&agrave; quello che fai &egrave; inviare alla stessa pagina il form compilato.
    Vediamo se riesco a spiegarmi:
    Fase 1:
    La pagina viene caricata nel browser, e tu vedi l'alert che, in questa fase, contiene:
    Valore del campo MEM: "" in fondo alla pagina

    Fase 2:
    Clicchi il pulsante [Submit]
    Cosa succede:
    2a : Vedi l'alert Valore di MEM: QUALCOSA al click!
    2b : la form viene inviata con il metodo POST alla pagina indicata nell'attributo action del form che, in questo caso, &egrave; la pagina stessa!
    2c : la pagina corrente VIENE RICARICATA e tu vedi l'alert Valore del campo MEM: "" in fondo alla pagina.

    Se tu, invece di dichiarare la form con method="POST" la dichiarassi con method="GET" (prova!!), vedresti che l'azione del submit abrebbe inviato alla pagina il valore del campo hidden!
    Infatti nella barra degli indirizzi vedresti: (ho chiamato il file test3.html)
    ....test3.html?mem=QUALCOSA&submitLogin=Cambia+val ore#
    Prova!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  4. #4
    Grazie mille,proverò tutto quanto prima!!!
    Quindi il passaggio via POST non è possibile?
    Cioè per esempio se volessi passare la password con il POST (in modo non chiaro)???

    Originariamente inviato da homezappa
    In realt&agrave; quello che fai &egrave; inviare alla stessa pagina il form compilato.
    Quindi potrei spostare il campo input al di fuori del form o crearne un altro appositamente per il campo hidden?

    Fase 2:
    Clicchi il pulsante [Submit]
    Cosa succede:
    2a : Vedi l'alert Valore di MEM: QUALCOSA al click!
    2b : la form viene inviata con il metodo POST alla pagina indicata nell'attributo action del form che, in questo caso, &egrave; la pagina stessa!
    2c : la pagina corrente VIENE RICARICATA e tu vedi l'alert Valore del campo MEM: "" in fondo alla pagina.
    Quindi il problema è del INPUT TYPE="SUBMIT" che forza al ricaricamento della pagina???potrei per esempio mettere un link href o cambiare il "SUBMIT" in qualche altra cosa usando un bottone "normale" (non di tipo SUBMIT)???
    "

  5. #5
    Originariamente inviato da SodoMyzer
    Grazie mille,proverò tutto quanto prima!!!
    Quindi il passaggio via POST non è possibile?
    Cioè per esempio se volessi passare la password con il POST (in modo non chiaro)???


    Quindi potrei spostare il campo input al di fuori del form o crearne un altro appositamente per il campo hidden?



    Quindi il problema è del INPUT TYPE="SUBMIT" che forza al ricaricamento della pagina???potrei per esempio mettere un link href o cambiare il "SUBMIT" in qualche altra cosa usando un bottone "normale" (non di tipo SUBMIT)???
    No, non &egrave; che l'input type="submit" forza il caricamento della pagina, semmai ... forse ... non hai chiaro cosa significhi inviare una form ...
    Nell'attributo action della form c'&egrave; scritto l'url della pagina che, sul server, si occuper&agrave; di leggerre i valori dei campi inviati e operare di conseguenza.
    Se tu metti action="#", come hai fatto, indichi alla form che la pagina a cui deve inviare i dati &egrave; ... la pagina presente!
    Se la pagina presente fosse stata uno script php, asp, o quant'altro, ok, ci avrebbe pensato il server a 'capire' che alla pagina erano stati inviati dati, analizzarli, eccetera...

    Mi sa che occorra che tu cominci a pensare ad un linguaggio lato server .. che so .. php, asp, dipende dal provider.

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

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.