Reset dei campi in un form

Ciao

Volevo sapere se è possibile resettare i campi input di un form

una volta compilato per intero e cliccato sul bottone invia (inserisci ecc ecc) senza aggiungere

un altro tasto di reset.

In pratica il bottone del form dovrebbe avere la doppia funzioni di inviare prima i dati

e subito dopo resettare i campi input del form.

Grazie

inviato 10 anni fa
frankphp
X 0 X

Non credo sia possa perché quando fai il submit ormai la pagina è "persa" ed il browser aspetta la risposta da parte del server.

Ma forse mi sbaglio  :dunno:

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ti dico la verità, non ho capito bene cosa devi fare, normalmente premendo invio i dati vengono inviati alla pagina successiva che li elabora ecc ecc, se poi questa 2° pagina rimanda alla pagina precedente il form viene caricato nuovamente ed è già vuoto.

Però, in linea teorica e premettendo he javascript non lo conosco, si potrebbe fare:

all'evento onsubmit del form o onclick del bottone attiva una funzione javascript che:

1 - prende i dati dei campi del form

2 - pulisce i campi

3 - invia i dati precedentemente recuperati e salvati in qualch variabile.

Ripeto, teoricamente è fattibile ma è il senso della cosa che mi sfugge!  :o

risposto 10 anni fa
LonelyWolf
X 0 X

Ti dico la verità, non ho capito bene cosa devi fare, normalmente premendo invio i dati vengono inviati alla pagina successiva che li elabora ecc ecc, se poi questa 2° pagina rimanda alla pagina precedente il form viene caricato nuovamente ed è già vuoto.

Però, in linea teorica e premettendo he javascript non lo conosco, si potrebbe fare:

all'evento onsubmit del form o onclick del bottone attiva una funzione javascript che:

1 - prende i dati dei campi del form

2 - pulisce i campi

3 - invia i dati precedentemente recuperati e salvati in qualch variabile.

Ripeto, teoricamente è fattibile ma è il senso della cosa che mi sfugge!  :o

Grazie. Non saprei come fare visto che di javascript non ne so niente.

In pratica ho il form in un frame (a sinistra) che invia i dati alla pagina php nel frame di destra.

una volta inviati i dati di un articolo (articoli di una fattura) dovrei subito dopo inviarne altri e il

"problema" è che i campi input del form rimangono ancora compilati e vorrei (per evitare errori:

ad esempio inviare innavertitamente un dato di un articolo precedente) che questi campi si resettino

automaticamente

senza usare un tasto di Reset,...tutto qui.

ciao

risposto 10 anni fa
frankphp
X 0 X

Ahh ecco, allora tutto è più chiaro, puoi seguire la linea logica che ti ho spiegato nel post precedente, se non sai da dove partire cerca script di validazione form  con javascript, da quelli riesci a capire come interagire con i campi e procedi.

risposto 10 anni fa
LonelyWolf
X 0 X
Ahh ecco, allora tutto è più chiaro, puoi seguire la linea logica che ti ho spiegato nel post precedente, se non sai da dove partire cerca script di validazione form  con javascript, da quelli riesci a capire come interagire con i campi e procedi.

ok vediamo un po' cosa trovo..magari mi rifaccio sentire, grazie e ciao ;)

risposto 10 anni fa
frankphp
X 0 X

Be basta che dopo aver inviato il form, riaggiorni la pagina in automatico, il rischio è che se uno disabilita il javascript non funziona più.

....
<input type='submit' name='invia' value='INVIA' onclick="location.url='nome della pagina del form'" />
....
risposto 10 anni fa
Marco Grazia
X 0 X

Be basta che dopo aver inviato il form, riaggiorni la pagina in automatico, il rischio è che se uno disabilita il javascript non funziona più.

....
<input type='submit' name='invia' value='INVIA' onclick="location.url='nome della pagina del form'" />
....

Non funziona. Come mai?

Ho fatto così:

<td width=18%><b><input type="submit" value="Inserisci" onclick="location.url='articoli.php'" /></td>

sbagliato qualcosa?

grazie

risposto 10 anni fa
frankphp
X 0 X

aiuto! :P

risposto 10 anni fa
frankphp
X 0 X

potresti ritornare al form (vuoto) inserendo nello script che riceve il form:

header("locarion: pagina_del_form.php");

exit;

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Cos'è un Locarion? :D

E' la stessa cosa Gianni, a parte che in effetti risolve il problema del javascript disabilitato.

Si possono anche mettere, sempre in php, variabili dei nomi dei campi in blank all'inizio della pagina, ad esempio se alcuni campi si chiamano ....

<?php
$nome = '';
?>
<input type='text' name='nome' value='<?=$nome ?>' />

In modo che il campo 'nome' sia sempre inserito in blank (vuoto)

risposto 10 anni fa
Marco Grazia
X 0 X

Ops, volevo dire:

header("location: pagina_del_form.php");

exit;

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ops, volevo dire:

header("location: pagina_del_form.php");

exit;

Proviamo grazie

risposto 10 anni fa
frankphp
X 0 X

Ops, volevo dire:

header("location: pagina_del_form.php");

exit;

Non va!

Mi ritrovo con la pagina del form ricaricata nella pagina che invece riceve i dati.

Il form si trova in un frame (a sinistra) e invia i dati ad una pagina php (a destra)

Ho provato ad aggiungere  target="articoli" (il nome del frame) ma non va lo stesso.

Cosa faccio?

Grazie ancora per l'interessamento.

risposto 10 anni fa
frankphp
X 0 X

aiuto ::)

risposto 10 anni fa
frankphp
X 0 X

Prova questo:

<form name="nome_form" method="post" target="nomedeltuoframe">
<input type="text" value="" name="i0">
<input type="text" value="" name="i1">
<input type="submit" value="invia" onclick="javascript:document.nome_form.reset()">
</form>

Andrex

Personal Website

asroma by Andrex.it

risposto 10 anni fa
Andrex
modificato 10 anni fa
X 0 X

Prova questo:

<form name="nome_form" method="post" target="nomedeltuoframe">
<input type="text" value="" name="i0">
<input type="text" value="" name="i1">
<input type="submit" value="invia" onclick="javascript:document.nome_form.reset()">
</form>

Andrex

Personal Website

asroma by Andrex.it

Non capisco, nemmeno funziona.

Ma perchè?

grazie

risposto 10 anni fa
frankphp
X 0 X

Non esiste l'attributo target in form, quindi non serve a nulla.

risposto 10 anni fa
Marco Grazia
X 0 X

Non esisterà, come dici tu, magari sarà deprecato o che so io, comunque se crei una pagina html col codice seguente e la esegui ottieni una form con 2 campi e un tasto submit. riempi i campi, premi submit e ti carica nel frame una potenziale pagina xx.php svuotando contemporaneamente i valori della form!

<form name="nome_form" method="post" action="xx.php" target="prova">
<input type="text" value="" name="i0">
<input type="text" value="" name="i1">
<input type="submit" value="invia" onclick="javascript:document.nome_form.reset()">
</form>
<iframe name="prova" width="500" height="400"></iframe>

Poi dimmi tu se non serve a niente!

PS: a me funziona sia su firefox che explorer.

PS2: comunque quello che conta di questo esempio è l'onclick che ho messo sul tasto submit, quello svuota la form!

risposto 10 anni fa
Andrex
X 0 X

Due cose, abbassa il tono della polemica, seconda cosa io mi baso su ciò che scrive il W3C così come pure mi riferirei al manuale ufficiale del PHP per questioni inerenti questo linguaggio, se poi i browser fanno come gli pare, io comunque lo ignoro, anche perché per fare esperimenti andrà pure bene ciò che hai realizzato, ma per scrivere codice pulito qualla cosa non va bene.

risposto 10 anni fa
Marco Grazia
X 0 X

mica volevo essere polemico..

scusa se lo sono sembrato..

comunque... per la cronaca ho messo la pagina online...

clicca qui

e l'ho fatta validare!!

nessun errore!

------------------------------------
prova.html
------------------------------------

<!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" lang="it" xml:lang="it">
   <head>
      <title>Prova </title>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
                <meta name="title" content="Andrex - " />
   </head>

<body>
<form name="nome_form" method="post" action="prova.php" target="prova">
<input type="text" value="" name="primotesto" />
<input type="text" value="" name="secondotesto" />
<input type="submit" value="invia" />
</form>

<iframe name="prova" width="500" height="400"></iframe>

</body>
</html>


--------------------------------
prova.php
--------------------------------

<body onload="javascript:parent.document.nome_form.reset();">

<?php
echo "text 1: ".$_POST["primotesto"];
echo "<br>";
echo "text 2: ".$_POST["secondotesto"];
?>
risposto 10 anni fa
Andrex
X 0 X

mica volevo essere polemico..

scusa se lo sono sembrato..

comunque... per la cronaca ho messo la pagina online...

clicca qui

e l'ho fatta validare!!

nessun errore!

------------------------------------
prova.html
------------------------------------

<!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" lang="it" xml:lang="it">
   <head>
      <title>Prova </title>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
                <meta name="title" content="Andrex - " />
   </head>

<body>
<form name="nome_form" method="post" action="prova.php" target="prova">
<input type="text" value="" name="primotesto" />
<input type="text" value="" name="secondotesto" />
<input type="submit" value="invia" />
</form>

<iframe name="prova" width="500" height="400"></iframe>

</body>
</html>


--------------------------------
prova.php
--------------------------------

<body onload="javascript:parent.document.nome_form.reset();">

<?php
echo "text 1: ".$_POST["primotesto"];
echo "<br>";
echo "text 2: ".$_POST["secondotesto"];
?>

ma allora, se ho capito bene, devo per forza mettere un iframe?

Perchè la mia "action" è riferita ad una pagina php in un altro frame:

<p align=center><b>Inserisci Articoli

<form method=POST action="fatt1.php" target= "fatt1" name = "art" onSubmit="return validate_form()">

</b></td>

grazie.

ps: onSubmit="return validate_form() si riferisce al richiamo di un'altra funzione javascript che non

ha niente a che fare con il mio problema. L'ho messa solo per far presente che esiste nella pagina altro codice che non vorrei andasse a creare qualche conflitto di qualsivolgia genere.

risposto 10 anni fa
frankphp
modificato 10 anni fa
X 0 X

no nonon è necessario l' iframe, va bene anche un frame normale...

metti questo nella pagina che riceve i dati:

<body onload="javascript:parent.document.nome_form.reset();">

dovrebbe funzionarti.

occhio... nome_form è il nome che hai dato alla form (nel tuo esempio è "art")

ciao e fammi sapere se funziona

risposto 10 anni fa
Andrex
X 0 X

scusa, nella pagina PHP che riceve i dati metti questo...

<body onload="javascript:parent.nomeFrame.document.nome_form.reset();">

risposto 10 anni fa
Andrex
X 0 X

Il validatore è fuori di testa o qualcuno al W3C, se target non c'è per form il validatore non dovrebbe darti l'ok, comunque funziona ed è già qualcosa.

Hai provato a toglierlo ma lasciando parent nella dichiarazione del javascript? Tanto per provare.

risposto 10 anni fa
Marco Grazia
X 0 X

scusa, nella pagina PHP che riceve i dati metti questo...

<body onload="javascript:parent.nomeFrame.document.nome_form.reset();">

grande ho risolto così:

?>

<body onload="javascript:parent.articoli.document.art.reset(); javascript:parent.articoli.document.art.codice.focus();">

<?

Ho aggiunto anche la funzione che riporta il cursore in un campo input (in questo caso codice che è il

primo della serie).

Era proprio quello che stavo cercando di ottenere.

Lo scopo era quello di velocizzare l'operazione di immissione dati; infatti adesso

appena inserisco i dati di un articolo subito il form è pronto per inserirne un altro

senza perdere tempo.

grazie ancora a tutti per gli interventi.

ps:Devo finiri di implementare le funzioni di questa pagina e del form ma

la cosa non riguarda l'oggetto della discussione che per quanto mi riguarda può

anche essere chiusa qui.

risposto 10 anni fa
frankphp
X 0 X

Risposta stupida:

togli i frame, che fanno molto anni 90!!!!!

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Risposta stupida:

togli i frame, che fanno molto anni 90!!!!!

 :bye:

Con gli include?

avevo pensato anche di creare un'unica pagina php e poi inserire gli include

in tabelle (lo schema deve rimanere lo stesso).

Non adesso però.

grazie per il suggerimento comunque e ciao

risposto 10 anni fa
frankphp
X 0 X

Ho perso così tanto tempo in passato a gestire i frame che adesso li vedo come un incubo. PHP può farne tranquillamente a meno, rendendo tutto più semplice.

 :bye:

P.S.: so che non ho contribuito a risolvere il tuo problema ma la prossima volta evita i frame...

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda