Champs en forme claire avec jQuery

je veux effacer tous les champs input et textarea sous une forme. Il fonctionne comme suit en utilisant un bouton d'entrée avec la classe reset :

$(".reset").bind("click", function() {
  $("input[type=text], textarea").val("");
});

cela effacera tous les champs de la page, pas seulement ceux du formulaire. Comment mes sélecteur de ressembler juste pour la forme réelle bouton de réinitialisation vit?

335
demandé sur Elnur Abdurrakhimov 2011-06-16 00:59:38

27 réponses

$(".reset").click(function() {
    $(this).closest('form').find("input[type=text], textarea").val("");
});
414
répondu ShaneBlake 2011-06-15 21:04:06

pour jQuery 1.6+ :

$(':input','#myform')
  .not(':button, :submit, :reset, :hidden')
  .val('')
  .prop('checked', false)
  .prop('selected', false);

pour jQuery < 1.6 :

$(':input','#myform')
  .not(':button, :submit, :reset, :hidden')
  .val('')
  .removeAttr('checked')
  .removeAttr('selected');

s'il vous Plaît voir ce post: réinitialisation d'une forme multi-étapes avec jQuery

ou

$('#myform')[0].reset();

comme jQuery suggère :

pour récupérer et changer les propriétés DOM telles que la checked , selected , ou disabled état des éléments de forme, utiliser le .prop() la méthode.

555
répondu ngen 2018-04-26 01:45:55

y a-t-il une raison pour que cela ne soit pas utilisé?

$("#form").trigger('reset');
139
répondu user768680 2013-03-17 18:45:57

cela ne traitera pas les cas où les champs d'entrée de formulaire ont des valeurs par défaut non vides.

quelque chose comme devrait fonctionner

$('yourdiv').find('form')[0].reset();
57
répondu parapura rajkumar 2011-06-15 21:03:43

si vous utilisez des sélecteurs et faites des valeurs à des valeurs vides, ce n'est pas réinitialiser le formulaire, c'est rendre tous les champs vides. Réinitialiser est de faire le formulaire comme il était avant toute action d'édition de l'utilisateur après la charge de formulaire du côté du serveur. S'il y a une entrée avec le nom "username" et que le nom d'Utilisateur a été pré-rempli du côté du serveur, la plupart des solutions sur cette page supprimera cette valeur de l'Entrée, pas la Réinitialiser à la valeur qu'elle était avant les changements de l'utilisateur. Si vous devez réinitialiser le formulaire, utilisez ce:

$('#myform')[0].reset();

si vous n'avez pas besoin de réinitialiser le formulaire, mais de remplir toutes les entrées avec une certaine valeur, par exemple une valeur vide, alors vous pouvez utiliser la plupart des solutions à partir d'autres commentaires.

44
répondu Lukas 2014-10-18 18:30:11

Simple mais qui fonctionne comme un charme.

$("#form").trigger('reset'); //jquery
document.getElementById("myform").reset(); //native JS
28
répondu jroi_web 2014-06-03 04:24:59

si quelqu'un est encore en train de lire ce fil, voici la solution la plus simple en utilisant non pas jQuery, mais simplement JavaScript. Si vos champs d'entrée sont dans un formulaire, il y a une simple commande de réinitialisation JavaScript:

document.getElementById("myform").reset();

pour en savoir plus, cliquez ici: http://www.w3schools.com/jsref/met_form_reset.asp

santé!

27
répondu Tarmo Saluste 2018-01-03 08:29:33
$('form[name="myform"]')[0].reset();
20
répondu apen 2015-06-01 03:53:59

pourquoi doit-on utiliser du JavaScript?

<form>
    <!-- snip -->
    <input type="reset" value="Reset"/>
</form>

http://www.w3.org/TR/html5/the-input-element.html#attr-input-type-keywords


essayé que l'un d'abord, il ne sera pas effacer les champs avec des valeurs par défaut.

Voici une façon de le faire avec jQuery, puis:

$('.reset').on('click', function() {
    $(this).closest('form').find('input[type=text], textarea').val('');
});
15
répondu Matt Ball 2013-12-27 14:36:51

j'ai le truc le plus facile pour réinitialiser le formulaire

jQuery("#review-form")[0].reset();

ou

$("#review-form").get().reset();
11
répondu mumair 2016-03-17 10:04:36

si vous voulez vider toutes les boîtes de saisie quel que soit leur type, c'est un pas de minute de

 $('#MyFormId')[0].reset();
11
répondu sunshine 2017-06-01 12:43:16

avec Javascript, vous pouvez simplement le faire avec cette syntaxe getElementById("your-form-id").reset();

vous pouvez également utiliser jquery en appelant la fonction reset de cette façon $('#your-form-id')[0].reset();

N'oubliez pas [0] . Vous obtiendrez l'erreur suivante si

TypeError: $(...).la réinitialisation n'est pas une fonction

JQuery fournit également un événement que vous pouvez utiliser""

$('#form_id').déclencheur("reset");

j'ai essayé et ça fonctionne.

Note: il est important de noter que ces méthodes ne réinitialisent votre formulaire qu'à leur valeur initiale définie par le serveur lors du chargement de la page. Cela signifie que si votre entrée a été définie sur la valeur 'set value' avant que vous ne fassiez un changement aléatoire, le champ sera réinitialisé à cette même valeur après que la méthode reset soit appelée.

j'Espère que ça aide

10
répondu BoCyrill 2016-09-01 18:36:01
$('#editPOIForm').each(function(){ 
    this.reset();
});

editPOIForm est l'attribut id de votre formulaire.

6
répondu Knowledge Serve 2013-07-17 12:01:12

pourquoi tu n'utilises pas document.getElementById("myId").reset(); ? c'est le simple et joli

5
répondu Carlos Alvarez 2015-12-23 13:02:18

code testé et vérifié:

  $( document ).ready(function() {
    $('#messageForm').submit(function(e){
       e.preventDefault();
    });
    $('#send').click(function(e){
      $("#messageForm")[0].reset();
    });
  });

Javascript doit être inclus dans $(document).ready et il doit être avec votre logique.

5
répondu DeepCode 2017-02-02 11:40:51

j'utilise ceci:

$(".reset").click(function() {
  $('input[type=text]').each(function(){
     $(this).val('');
  });
});

et voici mon bouton:

<a href="#" class="reset">
  <i class="fa fa-close"></i>
     Reset
</a>
3
répondu Matheno 2015-04-17 10:46:47

disons que si vous voulez effacer les champs et sauf accountType,dans la zone mean time dropdown seront réinitialisés à une valeur particulière,I. c'est tout.Les champs restants doivent être réinitialisés pour vider I. e zone de texte.Cette approche sera utilisée pour effacer des champs particuliers comme notre exigence.

 $(':input').not('#accountType').each( function() {

    if(this.type=='text' || this.type=='textarea'){
             this.value = '';
       }
    else if(this.type=='radio' || this.type=='checkbox'){
         this.checked=false;
      }
         else if(this.type=='select-one' || this.type=='select-multiple'){
              this.value ='All';
     }
 });
2
répondu Gnanasekaran Ebinezar 2012-05-31 09:09:12

la solution la plus simple et la meilleure est-

$("#form")[0].reset();

ne pas utiliser ici -

$(this)[0].reset();

2
répondu Mamun Sabuj 2018-03-19 07:40:19

utilisez ce Code pour appeler la fonction de réinitialisation normale par jQuery

setTimeout("reset_form()",2000);

et écrire cette fonction sur le Site jQuery sur Document Ready

<script>
function reset_form()
{
    var fm=document.getElementById('form1');
    fm.reset();
}
</script>
1
répondu Monzur 2013-04-22 20:33:44
@using (Ajax.BeginForm("Create", "AcceptanceQualityDefect", new AjaxOptions()
{
    OnSuccess = "ClearInput",
    HttpMethod = "Post",
    UpdateTargetId = "defect-list",
    InsertionMode = InsertionMode.Replace
}, new { @id = "frmID" })) 
  1. frmID est l'identification du formulaire
  2. OnSuccess de l'opération nous appelons la fonction JavaScript avec le nom " ClearInput "

    <script type="text/javascript">
        function ClearInput() {
            //call action for render create view
            $("#frmID").get(0).reset();
        }
    </script>
    
  3. si vous faites les deux à droite, alors vous ne pourrez pas l'empêcher de fonctionner...

1
répondu L.W.C. Nirosh 2014-10-14 13:04:54

si je veux effacer tous les champs sauf accountType..Utilisez le

$q(':input','#myform').not('#accountType').val('').removeAttr('checked').removeAttr('selected');
0
répondu Gnansekaran Ebinezar 2012-05-29 11:39:42

le code que je vois ici et sur des questions connexes semble incomplet.

Réinitialiser une forme signifie définir les valeurs originales du HTML, donc j'ai mis cela ensemble pour un petit projet que je faisais basé sur le code ci-dessus:

            $(':input', this)
                .not(':button, :submit, :reset, :hidden')
                .each(function(i,e) {
                    $(e).val($(e).attr('value') || '')
                        .prop('checked',  false)
                        .prop('selected', false)
                })

            $('option[selected]', this).prop('selected', true)
            $('input[checked]',   this).prop('checked',  true)
            $('textarea',         this).each(function(i,e) { $(e).val($(e).html()) })

faites-moi savoir si je manque quelque chose ou quelque chose peut être amélioré.

0
répondu Rafael Kitover 2013-03-28 20:22:05

aucun des éléments ci-dessus ne fonctionne sur un cas simple lorsque la page inclut un appel au contrôle de l'utilisateur web qui implique le traitement des requêtes IHttpHandler (captcha). Après avoir envoyé le requsrt (pour le traitement d'image), le code ci-dessous n'efface pas les champs du formulaire (avant d'envoyer la requête HttpHandler). tout fonctionne correctement.

<input type="reset"  value="ClearAllFields" onclick="ClearContact()" />

 <script type="text/javascript">
       function ClearContact() {
           ("form :text").val("");
       }
    </script>
0
répondu user2366666 2013-05-09 14:29:03

j'ai écrit un plugin jQuery universel:

/**
 * Resets any input field or form
 */
$.fn.uReset = function () {
    return this.filter('form, :input').each(function () {
        var input = $(this);
        
        // Reset the form.
        if (input.is('form')) {
            input[0].reset();
            return;
        }

        // Reset any form field.
        if (input.is(':radio, :checkbox')) {
            input.prop('checked', this.defaultChecked);
        } else if (input.is('select')) {
            input.find('option').each(function () {
                $(this).prop('selected', this.defaultSelected);
            });
        } else if (this.defaultValue) {
            input.val(this.defaultValue);
        } else {
            console.log('Cannot reset to default value');
        }
    });
};

$(function () {
    // Test jQuery plugin.
    $('button').click(function (e) {
        e.preventDefault();
        
        var button = $(this),
            inputType = button.val(),
            form = button.closest('form');
        
        if (inputType === 'form') {
            form.uReset()
        } else {
            $('input[type=' + inputType + '], ' + inputType, form).uReset();
        }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<h3>Form</h3>
<form>
    <input type="text" value="default"/><br /><br />
    Ch 1 (default checked) <input type="checkbox" name="color" value="1" checked="checked" /><br />
    Ch 2 <input type="checkbox" name="color" value="2" /><br />
    Ch 3 (default checked) <input type="checkbox" name="color" value="3" checked="checked" /><br /><br />
    <select name="time"><br />
        <option value="15">15</option>
        <option selected="selected" value="30">30</option>
        <option value="45">45</option>
    </select><br /><br />
    R 1 <input type="radio" name="color" value="1" /><br />
    R 2 (default checked) <input type="radio" name="color" value="2" checked="checked" /><br />
    R 3 <input type="radio" name="color" value="3" /><br /><br />
    <textarea>Default text</textarea><br /><br />
    
    <p>Play with form values and then try to reset them</p>
    
    <button type="button" value="text">Reset text input</button>
    <button type="button" value="checkbox">Reset checkboxes</button>
    <button type="button" value="select">Reset select</button>
    <button type="button" value="radio">Reset radios</button>
    <button type="button" value="textarea">Reset textarea</button>
    <button type="button" value="form">Reset the Form</button>
</form>
0
répondu Jekis 2016-06-30 23:15:22

le code suivant supprime tout le formulaire et ses champs seront vides. Si vous souhaitez effacer seulement un formulaire particulier si la page a plus d'un formulaire, s'il vous plaît mentionner l'id ou la classe du formulaire

$("body").find('form').find('input,  textarea').val('');
0
répondu shivaP 2017-11-04 11:19:52

ajouter le bouton de réinitialisation caché comme suit

<input id="resetBtn" type="reset" value="reset" style="display:none" />
// Call reset buttons click event
// Similar to ClearInputs('resetBtn');
function ClearInputs(btnSelector) {
     var btn = $("#" + btnSelector);
     btn.click();
}
-3
répondu Jayan.C.A 2013-02-05 10:25:38

$('form').soumettre (fonction () {

var el = $(this);

$('<button type="reset" style="display:none; "></button>')
    .appendTo(el)
    .click()
    .remove()
;

return false;

});

-3
répondu Júnior Mendonça 2013-04-19 13:04:33