2010-10-01 3 views
2

Mon formulaire HTML est effacé automatiquement après avoir cliqué sur le bouton Envoyer. Une idée de comment empêcher cela de se produire?Formulaire HTML onSubmit()

est ici la balise d'ouverture pour la forme:

<form onsubmit="return math()"> 
+5

Veuillez montrer le formulaire en entier. Je ne vois pas de code. – Marcus

Répondre

2

Si math() renvoie la valeur false, vos données ne disparaîtront pas, mais les données ne seront pas non plus envoyées au serveur. Si vous voulez envoyer des données au serveur, vous pouvez faire un XMLHttpRequest.

+0

Il y a un gotcha avec onsubmit - si la fonction fournie génère une erreur, le submit passera! –

3

lorsque vous cliquez sur soumettre la page est actualisée. Vous aurez probablement besoin de retourner une page avec la valeur du jeu de formulaires à ce qui était dedans quand il a été soumis.

4

Une approche populaire consiste à utiliser un langage côté serveur tel que PHP qui lit toutes les valeurs get et recrée le code HTML de la page en utilisant un modèle et en substituant les variables.

<input type = "text" name = "Textbox1" id = "Textbox1" value = "{$_GET[Textbox1]}"/> 

Je l'ai écrit comme $ _GET directement, mais vous auriez vraiment envie de vous assurer que la valeur a été nettoyée afin de ne pas l'injection html arbitraire. Un peu plus compliqué vous pourriez approcher ce côté purement client et utiliser javascript à parse the address bar et extraire les valeurs soumises à votre page (en supposant qu'il n'a pas été soumis avec POST comme méthode). Ensuite, vous pouvez repeupler dynamiquement les champs côté client.

+1

Ne pas frotter, HTML-échapper à l'étape de sortie. 'value =" "'. – bobince

+0

L'exemple que j'ai fourni était destiné à illustrer le cas simple et j'ai donc choisi d'extraire d'abord la partie sécurité de la sortie. Le code ci-dessus pourrait faire partie d'un système de gabarit ou autre chose. Idéalement, vous auriez une fonction personnalisée "SafeHtmlValueOutput()" ou quelque chose de similaire et vous l'utiliseriez dans tous les cas (en évitant la fonction htmlspecialchars car vous pourriez avoir besoin de modifier la fonction pour supprimer les sauts de ligne ou autres entrées intéressantes ne supporte pas.) Mais bon point! +1 à vous monsieur. – M2tM