Top Banner
jFormino Kang-min Liu [email protected]
48

Jformino

Dec 15, 2014

Download

Kang-min Liu

jFormino lightning talk for JUI conference Tokyo.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 2: Jformino

jFormino

Page 3: Jformino

jQuery Form by Handlino

Page 4: Jformino

What does it do

Page 5: Jformino

一、

Page 6: Jformino

DynamicForm

Generator

Page 7: Jformino

Generate<form>

Page 8: Jformino

$("<div/>").attr({ id: "form1" }).prependTo(document.body).formino({ legend: "Test Purpose Form", params: [ "field_one" ]});

Simple Example

Page 9: Jformino

$("<div/>").attr({ id: "form1" }).prependTo(document.body).formino({ legend: "Test Purpose Form", params: [ // only give field name, with auto-generateed label. "field_one", // manually assign a label { label: "Foo", name: "foo_field" }, // with initial value { label: "Bar", name: "bar_field", value: "42" }, // other types { name: "xyz", label: "XYZ", type: "checkbox", values: [ 42, 43, 44 ] } ]});

Extended Example

Page 10: Jformino

$("#form1").formino({ legend: 'GoogleMap demo', params: [ { label: 'Standard Google Map ', name: 'm', type: 'googlemap', value_for_latitude: '25.08532', value_for_longitude: '121.561499', zlevel: 13 }, ], buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] })

Google Map

Page 11: Jformino

$("#form1").formino({ legend: 'GoogleMap demo', params: [ { label: 'Standard Google Map ', name: 'm', type: 'googlemap', value_for_latitude: '25.08532', value_for_longitude: '121.561499', zlevel: 13 }, ], buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] })

Google Map

Page 12: Jformino

$("#form1").formino({ legend: 'GoogleMap demo', params: [ { label: 'Standard Google Map ', name: 'm', type: 'googlemap', value_for_latitude: '25.08532', value_for_longitude: '121.561499', zlevel: 13 }, ], buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] })

Google Map

Page 13: Jformino

二、

Page 14: Jformino

Form ElementUI Binder

Page 15: Jformino

$("input#foo").formino({ act_as: 'datetime-calendar', buttons: [ { type: "submit", label: "OK" }, { type: "cancel", label: "Nevermind" }, { label: "Hello", click: function(selected_date) { $("#message") .text( "Hello, you select " + selected_date.toString() ); } } ]});

Page 16: Jformino

$("input#foo").formino({ act_as: 'datetime-calendar', buttons: [ { type: "submit", label: "OK" }, { type: "cancel", label: "Nevermind" }, { label: "Hello", click: function(selected_date) { $("#message") .text( "Hello, you select " + selected_date.toString() ); } } ]});

Page 17: Jformino

$("input#foo").formino({ act_as: 'datetime-calendar', buttons: [ { type: "submit", label: "OK" }, { type: "cancel", label: "Nevermind" }, { label: "Hello", click: function(selected_date) { $("#message") .text( "Hello, you select " + selected_date.toString() ); } } ]});

Page 18: Jformino

$("input#foo").formino({ act_as: 'datetime-calendar', buttons: [ { type: "submit", label: "OK" }, { type: "cancel", label: "Nevermind" }, { label: "Hello", click: function(selected_date) { $("#message") .text( "Hello, you select " + selected_date.toString() ); } } ]});

YUI Skin compatible CSS

Page 19: Jformino

Why we designed it

Page 20: Jformino

RequirementFrom Work

Page 21: Jformino

DynamicForm

Page 22: Jformino

jQuery("div#for-form").html("<form><input/>...</form");

Page 23: Jformino

Not Elegant

Page 24: Jformino

What’s the Problem ?

Page 25: Jformino

jQuery("div#for-form").html("<form><input/>...</form");

Page 26: Jformino

Less Readable

Page 27: Jformino

Extend

Page 28: Jformino

Parameters

Page 29: Jformino

DeclarativeSyntax

Page 30: Jformino

Easy to Read ☺

Page 31: Jformino

Very Extendable ☺

Page 32: Jformino

All Parameters ☺

Page 33: Jformino

Input Type

Page 34: Jformino

• Primitives

• text, password, select, radio, checkbox

• Extended

• Date, Time, Date+Time

• Google Map

• Date Range, Ranged Value

Page 35: Jformino

How to use it

Page 36: Jformino

$("#form1").formino({ legend: "jquery.form simple demo", params: { "Title": "(The Title)", "name": { label: "Name" }, "ready": { label: "Ready ?", type: "radio", values: [ "yes", "no" ] }, "xoryorz": { label: "X, Y, or Z?", type: "radio", values: [ "X", "Y", "Z" ] }, "cto": { label: "Check These Out", type: "checkbox", values: [ "Check", "These", "Out" ] }, "favorite_food": { label: "Favorite Food", type: "select", values: ["Ham", "Hammer", "Hamburger"] } },

buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] }) .submit(function() { $("#message").html("You just submit that form:<pre>" + $(this).serialize() + "</pre>"); setTimeout(function() { $("#message").empty(); }, 60000); return false; });

Page 37: Jformino

$("#form1").formino({ legend: "jquery.form simple demo", params: { "Title": "(The Title)", "name": { label: "Name" }, "ready": { label: "Ready ?", type: "radio", values: [ "yes", "no" ] }, "xoryorz": { label: "X, Y, or Z?", type: "radio", values: [ "X", "Y", "Z" ] }, "cto": { label: "Check These Out", type: "checkbox", values: [ "Check", "These", "Out" ] }, "favorite_food": { label: "Favorite Food", type: "select", values: ["Ham", "Hammer", "Hamburger"] } },

buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] }) .submit(function() { $("#message").html("You just submit that form:<pre>" + $(this).serialize() + "</pre>"); setTimeout(function() { $("#message").empty(); }, 60000); return false; });

Page 38: Jformino

$("#form1").formino({ legend: "jquery.form simple demo", params: { "Title": "(The Title)", "name": { label: "Name" }, "ready": { label: "Ready ?", type: "radio", values: [ "yes", "no" ] }, "xoryorz": { label: "X, Y, or Z?", type: "radio", values: [ "X", "Y", "Z" ] }, "cto": { label: "Check These Out", type: "checkbox", values: [ "Check", "These", "Out" ] }, "favorite_food": { label: "Favorite Food", type: "select", values: ["Ham", "Hammer", "Hamburger"] } },

buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] }) .submit(function() { $("#message").html("You just submit that form:<pre>" + $(this).serialize() + "</pre>"); setTimeout(function() { $("#message").empty(); }, 60000); return false; });

Page 39: Jformino

$("#form1").formino({ legend: "jquery.form simple demo", params: { "Title": "(The Title)", "name": { label: "Name" }, "ready": { label: "Ready ?", type: "radio", values: [ "yes", "no" ] }, "xoryorz": { label: "X, Y, or Z?", type: "radio", values: [ "X", "Y", "Z" ] }, "cto": { label: "Check These Out", type: "checkbox", values: [ "Check", "These", "Out" ] }, "favorite_food": { label: "Favorite Food", type: "select", values: ["Ham", "Hammer", "Hamburger"] } },

buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] }) .submit(function() { $("#message").html("You just submit that form:<pre>" + $(this).serialize() + "</pre>"); setTimeout(function() { $("#message").empty(); }, 60000); return false; });

Page 40: Jformino

$("#form1").formino({ legend: "jquery.form simple demo", params: { "Title": "(The Title)", "name": { label: "Name" }, "ready": { label: "Ready ?", type: "radio", values: [ "yes", "no" ] }, "xoryorz": { label: "X, Y, or Z?", type: "radio", values: [ "X", "Y", "Z" ] }, "cto": { label: "Check These Out", type: "checkbox", values: [ "Check", "These", "Out" ] }, "favorite_food": { label: "Favorite Food", type: "select", values: ["Ham", "Hammer", "Hamburger"] } },

buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] }) .submit(function() { $("#message").html("You just submit that form:<pre>" + $(this).serialize() + "</pre>"); setTimeout(function() { $("#message").empty(); }, 60000); return false; });

Page 41: Jformino

$("#form1").formino({ legend: "jquery.form simple demo", params: { "Title": "(The Title)", "name": { label: "Name" }, "ready": { label: "Ready ?", type: "radio", values: [ "yes", "no" ] }, "xoryorz": { label: "X, Y, or Z?", type: "radio", values: [ "X", "Y", "Z" ] }, "cto": { label: "Check These Out", type: "checkbox", values: [ "Check", "These", "Out" ] }, "favorite_food": { label: "Favorite Food", type: "select", values: ["Ham", "Hammer", "Hamburger"] } },

buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] }) .submit(function() { $("#message").html("You just submit that form:<pre>" + $(this).serialize() + "</pre>"); setTimeout(function() { $("#message").empty(); }, 60000); return false; });

Page 42: Jformino

$("#form1").formino({ legend: "jquery.form simple demo", params: { "Title": "(The Title)", "name": { label: "Name" }, "ready": { label: "Ready ?", type: "radio", values: [ "yes", "no" ] }, "xoryorz": { label: "X, Y, or Z?", type: "radio", values: [ "X", "Y", "Z" ] }, "cto": { label: "Check These Out", type: "checkbox", values: [ "Check", "These", "Out" ] }, "favorite_food": { label: "Favorite Food", type: "select", values: ["Ham", "Hammer", "Hamburger"] } },

buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] }) .submit(function() { $("#message").html("You just submit that form:<pre>" + $(this).serialize() + "</pre>"); setTimeout(function() { $("#message").empty(); }, 60000); return false; });

Page 43: Jformino

$("#form1").formino({ legend: "jquery.form simple demo", params: { "Title": "(The Title)", "name": { label: "Name" }, "ready": { label: "Ready ?", type: "radio", values: [ "yes", "no" ] }, "xoryorz": { label: "X, Y, or Z?", type: "radio", values: [ "X", "Y", "Z" ] }, "cto": { label: "Check These Out", type: "checkbox", values: [ "Check", "These", "Out" ] }, "favorite_food": { label: "Favorite Food", type: "select", values: ["Ham", "Hammer", "Hamburger"] } },

buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] }) .submit(function() { $("#message").html("You just submit that form:<pre>" + $(this).serialize() + "</pre>"); setTimeout(function() { $("#message").empty(); }, 60000); return false; });

Page 44: Jformino

$("#form1").formino({ legend: 'GoogleMap demo', params: [ { type: 'googlemap', label: 'Standard Google Map ', name: 'm', value_for_latitude: '25.08532', value_for_longitude: '121.561499', zlevel: 13 }, ], buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] })

Page 45: Jformino

“longitude=121561499;latitude=25.08532”

$("#form1").formino({ legend: 'GoogleMap demo', params: [ { type: 'googlemap', label: 'Standard Google Map ', name: 'm', value_for_latitude: '25.08532', value_for_longitude: '121.561499', zlevel: 13 }, ], buttons: [ { "type": "submit", "label": "Go", "value": "go" }, { "type": "reset", "label": "Reset" } ] })

Page 46: Jformino

FYI

Page 47: Jformino

• 檢索: jFormino

• http://st.handlino.com/hdc/?jFormino

• contact: [email protected]@gugod.org

• http://twitter.com/gugod

• http://twitter.com/handlino

Page 48: Jformino