Bug Tracker

Modify

Ticket #11567 (closed feature: plugin)

Opened 14 months ago

Last modified 14 months ago

Add reset() method for partially/fully resetting form inputs

Reported by: SineSwiper Owned by:
Priority: undecided Milestone: None
Component: unfiled Version: 1.7.1
Keywords: Cc:
Blocking: Blocked by:

Description

Working code:

$.fn.extend({
   reset: function(makeBlank) {
      this.each(function() {
         var el   = $(this);
         switch(this.nodeName.toUpperCase()) {
            case 'INPUT':
               this.checked = makeBlank ? false : this.defaultChecked;
               // fall-through
            case 'TEXTAREA':
               this.value   = makeBlank ? ''    : this.defaultValue;
               return true;
            case 'OPTGROUP':
            case 'OPTION':
               el = el.parents('SELECT');
               // fall-through
            case 'SELECT':
               el.find('OPTION').each(function(i) {
                  this.selected = makeBlank ? false : this.defaultSelected;
                  if (this.defaultSelected && !el[0].multiple && !makeBlank) {
                     el[0].selectedIndex = i;
                     return false;
                  }
               });
               return true;
            case 'LABEL':
               var id   = el.attr('for');
               var list = el.find('INPUT, SELECT, TEXTAREA');
               if (id) list.unshift( $(id)[0] );
               list.reset();
               return true;
            case 'FORM':
               if (makeBlank) el.find('INPUT, LABEL, SELECT, TEXTAREA').reset();  // jQuery's reset()
               else           this.reset();                                       // JS FORM's reset()
               return true;
            default:
               el.find('FORM, INPUT, LABEL, SELECT, TEXTAREA').reset();
               return true;
         }
      });
      return this;
   }
});

This will search for and reset any form inputs in its path. Resetting means either making everything blank, or resetting it to its defaults, depending on the 'makeBlank' setting. You can choose to only reset part of the inputs, or the entire form, or all forms on the page.

Given that this sort of functionality involves basic FORM manipulation, IMO, this should be a core jQuery method.

Change History

comment:1 Changed 14 months ago by rwaldron

  • Status changed from new to closed
  • Resolution set to plugin

That's a lot of code for a new feature that doesn't appear to have high (or any) demand. Better to offer as a plugin

Please follow the  bug reporting guidlines and use  jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

View

Add a comment

Modify Ticket

Action
as closed
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.