Form Generator With JSON Schema - jQuery jsForm
File Size: | 385 KB |
---|---|
Views Total: | 3394 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

jsForm is a feature-rich JSON To Form generator that takes data from any JS objects and populates the form field with that data.
More Features:
- Form Validation.
- Data formatting.
- AJAX form submitting.
See Also:
Basic Usage:
1. Include both jQuery library and the jsForm plugin's script on the page.
<!-- jQuery --> <script src="/path/to/cdn/jquery.min.js"></script> <!-- Core --> <script src="/path/to/src/jquery.jsForm.js"></script> <!-- OPTIONAL. UI Controls and Field validation --> <script src="/path/to/src/jquery.jsForm.controls.js"></script>
2. Define your form data in a JS object as follows:
var jsonData = { name: "jQueryScript", // standard inputs props: { active: true, // checkbox groups: [{ name: "Base", priority: 0, tasks: [{ id:0, name: "base task1", priority: 1}, {id:1,name: "base task0", priority: 0}, {id:2,name: "base task2", priority: 2}] }, { name: "Important", priority: 2, tasks: [{id:0, name: "imp task1", priority: 1}, {id:1,name: "imp task0", priority: 0}] }, { name: "Other", priority: 1, tasks: [{id:0, name: "other", priority: 1}] }] }, state: "VISIBLE" // selects (enums) };
3. Initialize the plugin and fill the HTML form with the data you just defined.
<div id="details"> Name: <input name="data.name"/><br/> <input type="checkbox" name="data.props.active"/> active<br/> <select name="data.state"> <option value="VISIBLE">visible</option> <option value="IMPORTANT">important</option> <option value="HIDDEN">hidden</option> </select> <div class="collection sort" data-field="data.props.groups" data-sort="priority"> <fieldset> <legend>Group: <span class="field">groups.name</span></legend> <ul class="collection sort reorder" data-field="groups.tasks" data-sort="priority"> <li><input name="tasks.name"/></li> </ul> <button class="sortUp">up</button> <button class="sortDown">down</button> </fieldset> </div> </div>
$("#details").jsForm({ data:jsonData });
4. Available plugin options.
$("#details").jsForm({ /** * enable form control rendering (if jsForm.controls is available) and validation */ controls: true, /** * the object used to fill/collect data */ data: null, /** * the prefix used to annotate the input fields */ prefix: "data", /** * set to null to discourage the tracking of "changed" fields. * Disabling this will increase performance, but disabled the "changed" functionality. * This will add the given css class to changed fields. */ trackChanges: "changed", /** * set to false to only validate visible fields. * This is discouraged especially when you have tabs or similar elements in your form. */ validateHidden: true, /** * skip empty values when getting an object */ skipEmpty: false, /** * an object with callback functions that act as renderer for data fields (class=object). * ie. { infoRender: function(data){return data.id + ": " + data.name} } */ renderer: null, /** * an object with callback functions that act as pre-processors for data fields (class=object). * ie. { idFilter: function(data){return data.id} } */ processors: null, /** * dataHandler will be called for each field filled. */ dataHandler: null, /*{ serialize: function(val, field, obj) { if(field.hasClass("reverse")) return val.reverse(); }, deserialize: function(val, field, obj) { if(field.hasClass("reverse")) return val.reverse(); } }*/ /** * optional array of elements that should be connected with the form. This * allows the splitting of the form into different parts of the dom. */ connect: null, /** * The class used when calling preventEditing. This will replace all * inputs with a span with the given field */ viewClass: "jsfValue" });
5. API methods.
// Deserialize the object based on the form $("#details").jsForm("get"); // Get the data object $("#details").jsForm("getData"); // Prevent editing $("#details").jsForm("preventEditing", [true|false]); // Fill the form $("#details").jsForm("fill", data); // Clear the form $("#details").jsForm("clear"); // Reset the form $("#details").jsForm("reset"); // Check if the form has been changed $("#details").jsForm("changed"); // Compare data $("#details").jsForm("equals", data[, "idField"]);
Changelog:
v1.6.0 (2024-05-16)
- Upgrade of ES Version 6 : Use of "const" and "let" instead of var
- Bugfixes
v1.5.6 (2024-05-15)
- Update & bugfix
v1.5.5 (2023-07-22)
- Update
v1.5.4 (2021-06-27)
- Update to 1.5.4 with luxon support
v1.5.2 (2021-06-24)
- add boolean handling
v1.5.1 (2021-06-03)
- fix issue with collections
This awesome jQuery plugin is developed by corinis. For more Advanced Usages, please check the demo page or visit the official website.