Clear form fields with jQuery

JqueryHtmlForms

Jquery Problem Overview


I want to clear all input and textarea fields in a form. It works like the following when using an input button with the reset class:

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

This will clear all fields on the page, not just the ones from the form. How would my selector look like for just the form the actual reset button lives in?

Jquery Solutions


Solution 1 - Jquery

For jQuery 1.6+:

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

For jQuery < 1.6:

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

Please see this post: https://stackoverflow.com/questions/680241/blank-out-a-form-with-jquery

Or

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

As jQuery suggests:

> To retrieve and change DOM properties such as the checked, selected, or disabled state of form elements, use the .prop() method.

Solution 2 - Jquery

$(".reset").click(function() {
    $(this).closest('form').find("input[type=text], textarea").val("");
});

Solution 3 - Jquery

Any reason this shouldn't be used?

$("#form").trigger('reset');

Solution 4 - Jquery

This won't handle cases where form input fields have non empty default values.

Something like should work

$('yourdiv').find('form')[0].reset();

Solution 5 - Jquery

if you use selectors and make values to empty values, it is not resetting the form, it's making all fields empty. Reset is to make form as it was before any edit actions from user after the load of form from server side. If there is an input with name "username" and that username was prefilled from server side, most of solutions on this page will delete that value from input, not reset it to the value how it was before user's changes. If you need to reset the form, use this:

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

if you need not to reset the form, but fill all inputs with some value, for example empty value, then you can use most of the solutions from other comments.

Solution 6 - Jquery

If someone is still reading this thread, here is the simplest solution using not jQuery, but plain JavaScript. If your input fields are inside a form, there is a simple JavaScript reset command:

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

More about it here: http://www.w3schools.com/jsref/met_form_reset.asp

Cheers!

Solution 7 - Jquery

Simple but works like a charm.

$("#form").trigger('reset'); //jquery
document.getElementById("myform").reset(); //native JS

Solution 8 - Jquery

$('form[name="myform"]')[0].reset();

Solution 9 - Jquery

Why does it need to be done with any JavaScript at all?

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

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


> Tried that one first, it won't clear fields with default values.

Here's a way to do it with jQuery, then:

$('.reset').on('click', function() {
    $(this).closest('form').find('input[type=text], textarea').val('');
});

Solution 10 - Jquery

If you want to empty all input boxes irrespective of its type then it's a minute step by

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

Solution 11 - Jquery

I got easiest trick to reset form

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

or

$("#review-form").get().reset();
                

Solution 12 - Jquery

With Javascript you can simply do it with this syntax getElementById("your-form-id").reset();

you can also use jquery by calling the reset function this way $('#your-form-id')[0].reset();

Remember not to forget [0]. You will get the following error if

> TypeError: $(...).reset is not a function

JQuery also provides an event you can use

> $('#form_id').trigger("reset");

I tried and it works.

Note: Its important to notice that these methods only reset your form to their initial value set by the server on page load. This means if your input was set on the value 'set value' before you did a random change, the field will be reset to that same value after reset method is called.

Hope it helps

Solution 13 - Jquery

$('#editPOIForm').each(function(){ 
    this.reset();
});

where editPOIForm is the id attribute of your form.

Solution 14 - Jquery

Why you dont use document.getElementById("myId").reset(); ? this is the simple and pretty

Solution 15 - Jquery

Tested and verified code:

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

Javascript must be included in $(document).ready and it must be with your logic.

Solution 16 - Jquery

Most easy and best solution is-
$("#form")[0].reset();

Don't use here -
$(this)[0].reset();

Solution 17 - Jquery

By using a combination of JQuery's .trigger() and native Javascripts's .reset() all form elements can be reset to blank state.

$(".reset").click(function(){
    $("#<form_id>").trigger("reset");
});

Replace <form_id> with id of form to reset.

Solution 18 - Jquery

Let us say if you want to clear the fields and except accountType,in the mean time dropdown box will be reset to particular value,i.e 'All'.Remaining fields should be reset to empty i.e text box.This approach will be used for clearing particular fields as our requirement.

 $(':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';
	 }
 });

Solution 19 - Jquery

I use this :

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

And here is my button:

<a href="#" class="reset">
  <i class="fa fa-close"></i>
     Reset
</a>

Solution 20 - Jquery

Some of you were complaining that radios and such are cleared of default "checked" status... All you have to do is add the :radio, :checkbox selectors to the .not and the problem is solved.

If you can't get all the other reset functions to work, this one will.

  • Adapted from ngen's answer

      function form_reset(formID){
          $(':input','#'+formID)
          .not(':button',':submit',':reset',':hidden',':radio',':checkbox')
          .val('');
      }
    

Solution 21 - Jquery

$(document).ready(function() {
    $('#reset').click(function() {
    $('#compose_form').find("input[type=text] , textarea ").each(function() {
    $(this).val('');
   });
  });
});  

Solution 22 - Jquery

Use this Code Where you want to Call Normal Reset Function by jQuery

setTimeout("reset_form()",2000);

And Write this Function Out Site jQuery on Document Ready

<script>
function reset_form()
{
	var fm=document.getElementById('form1');
	fm.reset();
}
</script>

Solution 23 - Jquery

@using (Ajax.BeginForm("Create", "AcceptanceQualityDefect", new AjaxOptions()
{
    OnSuccess = "ClearInput",
    HttpMethod = "Post",
    UpdateTargetId = "defect-list",
    InsertionMode = InsertionMode.Replace
}, new { @id = "frmID" })) 
  1. frmID is the identification of the form

  2. OnSuccess of the operation we call the JavaScript function with the name "ClearInput"

     <script type="text/javascript">
         function ClearInput() {
             //call action for render create view
             $("#frmID").get(0).reset();
         }
     </script>
    
  3. if you do both of these right, then you will not be able to stop it from working...

Solution 24 - Jquery

The following code clear all the form and it's fields will be empty. If you want to clear only a particular form if the page is having more than one form, please mention the id or class of the form

$("body").find('form').find('input,  textarea').val('');

Solution 25 - Jquery

If i want to clear all the fields except accountType..Use the following

$q(':input','#myform').not('#accountType').val('').removeAttr('checked').removeAttr('selected');

Solution 26 - Jquery

the code I see here and on related SO questions seems incomplete.

Resetting a form means setting the original values from the HTML, so I put this together for a little project I was doing based on the above code:

            $(':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()) })

Please let me know if I'm missing anything or anything can be improved.

Solution 27 - Jquery

None of the above works on a simple case when the page includes a call to web user control that involves IHttpHandler request processing (captcha). After sending the requsrt (for image processing) the code below does not clear the fields on the form (before sending the HttpHandler request ) everythings works correctly.

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

 <script type="text/javascript">
       function ClearContact() {
           ("form :text").val("");
       }
    </script>

Solution 28 - Jquery

I've written a universal jQuery plugin:

/**
 * 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>

Solution 29 - Jquery

Add hidden reset button as follows

<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();
}

			

Solution 30 - Jquery

$('form').submit(function() {

    var el = $(this);

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

    return false;

});

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiontbuehlmannView Question on Stackoverflow
Solution 1 - JqueryngenView Answer on Stackoverflow
Solution 2 - JqueryShaneBlakeView Answer on Stackoverflow
Solution 3 - Jqueryuser768680View Answer on Stackoverflow
Solution 4 - Jqueryparapura rajkumarView Answer on Stackoverflow
Solution 5 - JqueryLukas LiesisView Answer on Stackoverflow
Solution 6 - JqueryTarmo SalusteView Answer on Stackoverflow
Solution 7 - Jqueryjroi_webView Answer on Stackoverflow
Solution 8 - JqueryapenView Answer on Stackoverflow
Solution 9 - JqueryMatt BallView Answer on Stackoverflow
Solution 10 - JqueryRashi GoyalView Answer on Stackoverflow
Solution 11 - JquerymumairView Answer on Stackoverflow
Solution 12 - JqueryBoCyrillView Answer on Stackoverflow
Solution 13 - JqueryKnowledge ServeView Answer on Stackoverflow
Solution 14 - JqueryCarlos AlvarezView Answer on Stackoverflow
Solution 15 - JqueryDeepCodeView Answer on Stackoverflow
Solution 16 - JqueryMamun SabujView Answer on Stackoverflow
Solution 17 - JqueryLewisView Answer on Stackoverflow
Solution 18 - JqueryGnanasekaran EbinezarView Answer on Stackoverflow
Solution 19 - JqueryMathenoView Answer on Stackoverflow
Solution 20 - JqueryGregory BowersView Answer on Stackoverflow
Solution 21 - JqueryKhalid ButtView Answer on Stackoverflow
Solution 22 - JqueryMonzurView Answer on Stackoverflow
Solution 23 - JqueryL.W.C. NiroshView Answer on Stackoverflow
Solution 24 - JqueryshivaPView Answer on Stackoverflow
Solution 25 - JqueryGnansekaran EbinezarView Answer on Stackoverflow
Solution 26 - JqueryRafael KitoverView Answer on Stackoverflow
Solution 27 - Jqueryuser2366666View Answer on Stackoverflow
Solution 28 - JqueryJekisView Answer on Stackoverflow
Solution 29 - JqueryJayan.C.AView Answer on Stackoverflow
Solution 30 - JqueryJúnior MendonçaView Answer on Stackoverflow