Giter Site home page Giter Site logo

yangxin1994 / clone-section-of-form-es6-or-jquery Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tristandenyer/clone-section-of-form-es6-or-jquery

0.0 0.0 0.0 215 KB

Now on npm. Using vanilla JavaScript (ES6) or jQuery to duplicate a section of a form, maintaining accessibility (a11y).

License: MIT License

CSS 12.04% HTML 63.57% JavaScript 24.39%

clone-section-of-form-es6-or-jquery's Introduction

npm

Plain JavaScript version now available on npm! (Currently in alpha.)

Duplicate a section of a form, maintaining accessibility (a11y)

Using jQuery or plain JavaScript (ES6), you can now duplicate a section of a form (as well as destroy the last cloned section), the whole form, or just one or two inputs. This also allows the user to add an empty form section with unique, iterative ID, for, name, and label to maintain accessibility (a11y) and work with the database.

To help you get a jumpstart on this, the .js files are well-commented.

Overview

A more detailed overview can be found here. I will be working on porting it over to this page soon. (Still working on this todo.)

jQuery version

The jQuery version has been in development since June 2013, and is more stable, at the moment.

ES6 JavaScript version

The ES6 version was a direct port over from the jQuery version. While it works in the same way the jQuery one does, there are some notable todos and refactoring that needs to be done before it can be used in production environments.

Capabilities

This cloning script is built to:

  • allow a user to duplicate a section (one or more inputs) of a form
  • not duplicate the user’s inputs from the original section, but show a fresh, empty section below the original
  • stop a user from adding new sections at a specified integer (default is 5 total)
  • maintain the accessibility of matching the labels to the input attributes, even after cloning
  • increment the updated for, id and name attributes (ID2_, ID3_, ID4_) so as to be unique pairs
  • be customizable to work with your existing form

This is not a drop-in-and-it-works solution. You can see in the .js files that we depend on querying for classnames to update the for, id and name attributes of inputs, among other things.

How it works

  1. you wrap the section you want to allow to be cloned with a div with a class of clonedInput.
  2. on click, we clone that section and all of its children nodes
  3. then we increment a number variable (to keep track of sections; for, id and name attributes; removing sections...)
  4. increment the for, id and name attributes (ID2_, ID3_, ID4_) of inputs
  5. set all input values to null
  6. insert the cloned and updated section after the previous
  7. check if we are at the max allowable sections, and update buttons accordingly

Demos

The ES6 demo can be viewed here (download repo and view).

Duplicate a whole section of a form

The Bootstrap 3.4 demo for duplicating a whole section of a form can be found here.

Duplicate multiple elements independently

The Bootstrap 3.4 demo supporting duplicating multiple elements independently can be found here.

Cool Time Budget Calculator on Codepen

I found a pen that uses version 0.9.4.1 to create a simple form for a calculator. View it here.

Questions/support

You can best reach me by using my contact page.

Or on Twitter: @tristandenyer

License

The MIT License (MIT)

clone-section-of-form-es6-or-jquery's People

Contributors

tdenyer avatar tristandenyer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.