refresh di un imput solo del form
refresh di un imput solo del form postato il 02/09/2012 03:39:14 nel forum programmazione, open source e hosting
Ciao a tutti, da un pò sto tirando su una specie di mini gdr per giocare con i miei amici distanti, login, registrazione, chat, schede pg, dopo un bel pò tutto funzionante. Ora volevo aggiungere alla chat un input "luogo" che aiutava a identificare la posizione dei giocatori in una locazione (tipo Gino: [Porta] allunga l'orecchio allertato da uno strano fruscio) ora ho un form dentro il mio frame, non riesco a far si che l'input WHERE resti quello digitato in precedenza e l'input MESSAGE si svuoti. Il javascript mi ha lascio a piedi dato che sono riuscito solo a svuotare il form prima dell'invio ottenendo righe di chat vuote. Qualcuno sa darmi qualche dritta?
Pagine → 1
02/09/2012 09:16:20
Innanzitutto bisogna capire una cosa visto che parli di js.
Il'invio dei dati del form e quindi il conseguente svuotamento dei campi del form avviene pe ril normale submit del form e quindi perchè la pagina si refresha o l'invio avviene tramite ajax e quindi il form viene svuotato dallo script che provvede all'invio dei dati?
Nel primo caso la soluzione è abbastanza semplice perchè ti basta modificare l'input WHERE in un modo simile:
<input type="text" name="WHERE" value="<?php echo $_POST['WHERE']; ?>" size="24" />
nel caso di invio tramite ajax, magari lis arebbe il caso prima di vedere come è strutturato lo script per dirti dove intervenire
02/09/2012 16:38:51
innanzitutto grazie dyrr del tuo interessamento.
a dire il vero il mio form al momento sarebbe (escludendo tutte gli esperimenti falliti di resettare un campo solo tramite javascript e simili)
<body background="img/p.png" text="#330066" link="#330066" alink="#330066" vlink="#330066" onload='document.INform_falso.message.focus()';>
<form name="INform" method="post" target="chatview" action="chatdaemon.php" onsubmit="javascript:location.reload()">
<input type="text" name="where" size="5" autocomplete="no" value="">
<input type="text" name="message" size="95" autocomplete="no" value="">
<input type="submit" name="invia" value="Invia">
ho provato ad aggiungere quel pezzetto di php come dici tu ma non funziona, sono più perplesso di prima ora :P
02/09/2012 19:01:58
non funziona perchè la prima volta che la pagina carica la struttura della chatt ovvamente non c'è nessuna variabile inviata tramite post.
il form viene poi inviato e resettato dallo script:
onsubmit="javascript:location.reload()"
senza vedere cosa c'è in quello script è un pò difficile dirti come modificarlo per ottenere l'effetto desiderato
02/09/2012 19:26:41
al momento non ho usato <script></script> perchè non capendone molto è inutile che compilo script scopiazzato e sensa senso. I comandi i java sono contenuti lì meri e semplici, quindi dovrei riuscire a far leggere alla pagina il POST insomma così che caricando lo stampi giusto?
02/09/2012 20:03:28 e modificato da dyrr il 02/09/2012 20:06:56
mi sono rintronato io, chissà perchè nella mia follia pensavoa quel reload come a duna chiamata a qualche finzione definita da te.
Si vede che la odmenica perdo colpi rileggendola maglio adesso ho capito quale è il suo funzionamento.
non ti stampa quel mio pezzo di codice perchè i deti del form:
<form name="INform" method="post" target="chatview" action="chatdaemon.php" onsubmit="javascript:location.reload()">
vengono inviati a:
target="chatview"
che suppongo non si trovi sullo stesso frame dell'inpute poi al submit:
onsubmit="javascript:location.reload()"
fa il reload della pagina suppongo n un altro frame della pagina di input pulendo i cambi del form.
essendo il tuo form:
<form name="INform" method="post" target="chatview" action="chatdaemon.php" onsubmit="javascript:location.reload()">
<input type="text" name="where" size="5" autocomplete="no" value="">
<input type="text" name="message" size="95" autocomplete="no" value="">
<input type="submit" name="invia" value="Invia">
trasformarlo in un:
<form name="INform" method="post" target="chatview" action="chatdaemon.php" onsubmit="document.INform.message.value='';">
<input type="text" name="where" size="5" autocomplete="no" value="">
<input type="text" name="message" size="95" autocomplete="no" value="">
<input type="submit" name="invia" value="Invia">
</form>
in questo modo al submit invece di ricaricarti la pagina e quindi svuotare tutti i campi svuoteresti solo il campo dle messaggio sempre che tu non abbia altre particolari esigenze per ricaricare l'input
Con FF15, Opera 12, IE 8 e chrome il sistema da me postato funziona
02/09/2012 20:41:42
😵
su Ubuntu sia su Firefox 15 che su Chromium 18 mi svuota i campi prima del submit presentandomi così righe di chat senza testo, ora mi chiedo se a te funziona possibile che Ubuntu faccia a pugni col JS?
02/09/2012 21:39:42
Il problema è il timing degli eventi che non faceva risultare consequenziale prima il submit e poi la cancellaizone
prova con uno script come questo al submit io ho risolto cosi:
<script type="text/javascript">
function submitform()
{
document.INform.submit();
setTimeout("document.INform.message.value='';", 200);
return false;
}
</script>
lo ho anche messo online su questo link, cosi puoi testarlo http://dyrr.altervista.org/form.html ↗
non ho formattato ne html ne altro perchè mi bastava che fosse funzionante.
02/09/2012 22:11:11
Perfettamente funzionante 🍌
ti ringrazio davvero di cuore, mi sono potuto togliere sto peso 😁
02/09/2012 22:36:37
La cosa che non ho mai capito io è come se si metta anche solo:
document.INform.submit();
setTimeout("document.INform.message.value='';", 0);
quindi impostando il tempo di attesa a 0 millisecondi lo script funzioni lo stesso correttamente
mentre se si usa:
document.INform.submit();
document.INform.message.value='';
succeda come hai verificato tu che gli eventi vengono triggerati praticamente simultaneamente e quindi il campo venga svuotato e non inviato il valore del campo.
Probabilmente mi manca qualche nozione base di js che spiegherebbe la cosa e sarei curioso se magari qualcuno più esperto mi possa spiegare la cosa
Se vuoi uno svuotamento più veloce del campo puoi abbassar eil timing del timeout a quello che ti è più comodo
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Imperion ↗
War Thunder ↗
Crossout ↗
CRSED: F.O.A.D. ↗
World of Tanks ↗
New Orleans ↗
Raja Dunia ↗