Par exemple, j'ai un formulaire comme celui-ci:
<form method='post' action='someaction.php' name='myform'>
<input type='text' name='text1'>
<input type='text' name='text2'>
<input type='checkbox' name="check1">Check Me
<textarea rows="2" cols="20" name='textarea1'></textarea>
<select name='select1'>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<input type='reset' value='Reset' name='reset'>
<input type='submit' value='Submit' name='submit'>
</form>
Lorsque j'appuie sur Reset
, tous les champs sont vides. Mais si je renseigne certains champs à l’aide des paramètres d’URL, puis que j’appuie sur Reset
, cela ne vide que les champs que j’ai entrés après le rechargement du formulaire.
Comment puis-je vider tous les champs si certains champs sont déjà renseignés au moment du chargement du formulaire?.
Comme d'autres l'ont souligné, je pense que vous devriez reconsidérer la nécessité de blanc le formulaire . Mais si vous avez vraiment besoin de cette fonctionnalité, c'est une façon de le faire:
Javascript simple:
function resetForm(form) {
// clearing inputs
var inputs = form.getElementsByTagName('input');
for (var i = 0; i<inputs.length; i++) {
switch (inputs[i].type) {
// case 'hidden':
case 'text':
inputs[i].value = '';
break;
case 'radio':
case 'checkbox':
inputs[i].checked = false;
}
}
// clearing selects
var selects = form.getElementsByTagName('select');
for (var i = 0; i<selects.length; i++)
selects[i].selectedIndex = 0;
// clearing textarea
var text= form.getElementsByTagName('textarea');
for (var i = 0; i<text.length; i++)
text[i].innerHTML= '';
return false;
}
Notez que j'ai commenté le cas dans lequel j'efface les entrées hidden
. La plupart du temps, ce n'est pas nécessaire.
Pour que cela fonctionne, vous devez appeler la fonction à partir du gestionnaire onclick
d'un bouton (ou d'une autre manière), par exemple. comme ça:
<input type='reset' value='Reset' name='reset' onclick="return resetForm(this.form);">
Vous pouvez tout tester ici jsFiddle .
Si vous utilisez jQuery dans votre projet, vous pouvez le faire avec beaucoup moins de code (et pas besoin de changer le code HTML):
jQuery(function($) { // onDomReady
// reset handler that clears the form
$('form[name="myform"] input:reset').click(function () {
$('form[name="myform"]')
.find(':radio, :checkbox').removeAttr('checked').end()
.find('textarea, :text, select').val('')
return false;
});
});
Notez également que je ne supprime pas les valeurs values des entrées masquées, des cases à cocher et des boutons radio.
Jouez avec ceci ici .
Dans jQuery, vous pouvez simplement utiliser,
$("#yourFormId").trigger('reset');
Vous devrez tous les effacer par javascript (ou effacer le côté serveur).
Le bouton reset
ne réinitialisera que les éléments de formulaire à leur valeur initiale - s'il s'agissait d'une valeur spécifique, c'est sur quoi il sera réinitialisé.
Si vous utilisez jQuery, le code est beaucoup plus simple:
$('#my-form').not(':button, :submit, :reset, :hidden').val('').removeAttr('checked').removeAttr('selected');
Vous pouvez également supprimer le sélecteur: hidden du sélecteur .not si vous souhaitez également effacer les champs masqués.
J'ai résumé certaines des suggestions en utilisant jQuery pour donner une solution plus complète à la question:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Demo Forms</title>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
</head>
<body>
<form method='post' action='someaction.php' name='myform'>
<input type='text' name='text1'>
<input type='text' name='text2' value='preset value'>
<input type='checkbox' name="check1">Check Me
<textarea rows="2" cols="20" name='textarea1'></textarea>
<select name='select1'>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<input type='button' value='Reset' name='reset' onclick="return clearForm(this.form);">
<input type='submit' value='Submit' name='submit'>
<script>
function clearForm(form) {
var $f = $(form);
var $f = $f.find(':input').not(':button, :submit, :reset, :hidden');
$f.val('').attr('value','').removeAttr('checked').removeAttr('selected');
}
</script>
</form>
</body>
</html>
Notez que j'ai ajouté l'inclusion de jquery lib dans la section head et ajouté un gestionnaire onclick
au bouton de réinitialisation. Enfin, j'ai ajouté le code javascript basé sur les commentaires d'autres réponses ici.
J'ai également ajouté une valeur prédéfinie à un champ de texte. La fonction val('')
n'effacerait pas un tel champ, c'est pourquoi j'ai également ajouté attr('value','')
à la dernière ligne de script pour efface ces valeurs par défaut .
Le moyen le plus simple d'effacer un formulaire consiste à utiliser la balise HTML.
<input type="reset" value="Reset">
Exemple:
<form>
<table>
<tr>
<td>Name</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>Reset</td>
<td><input type="reset" value="Reset"></td>
</tr>
</table>
</form>
Vous pouvez faire quelque chose de similaire à cela dans JS et l'appelez de onclick
dans votre bouton:
function submit() {
$('#fieldIdOne').val('');
$('#fieldIdTwo').val('');
}
Et puis dans votre fichier HTML:
<button id="submit" onclick="submit(); return false">SIGN UP</button>
Si vous utilisez cette solution avec Firebase, elle n'enverra rien à la base de données à moins que vous ajoutiez return false
juste après l'appel.