Play with this form...
Sort
Premium
Standard
Lowcost
Qty
12 piles
Size
mm
A6
A5
A4
A3
|
➜ |
...and watch its data-
|
Why $.my is so sweet?Validation. It's comprehensive and not only accepts regexps as mask, but also strings, arrays and functions. Speed. Any option you change or any character you type forces immidiate revalidation and recalc. Conditional formatting. Form can change its appearance according to the values entered. Recalc. jQuery.my recalculates and redraws dependent fields in real-time. Looping dependencies are resolved correctly. Complex mapping. Bind one HTML control to many fields, combine many inputs into one data field. In the demo above size input is splitted into x and y. Non-standard controls. $.my recognizes standard HTML controls as well as composite controls rendered by tagstrip, jQuery Mobile and several jQuery UI widgets. List is growing. It's bi-directional. You can change javascript data – entire set or several fields, and the form will be revalidated and redrawn. It's short. About 14kB unzipped. Note that $.my requires not only jQuery but SugarJS as well – without Sugar it'll be twice as long. And I believe you will enjoy Sugar as I did ) And it's simple. No new-and-absolutely-unique syntax. No complicated abstraction layers. No schemas. Minimal useful subset of params is very compact. |
Two examples
$("#example1").my({
ui: {
"#w": {bind:"x", check:/^\d{1,2}$/,
recalc:"#area"},
"#h": {bind:"y", check:/^\d{2,3}$/,
recalc:"#area"},
"#area": {
bind: function(data, val) {
return Math.round(data.x*data.y);
}
}
}});
× = 12
This code binds #w and #h inputs (childs of #example1) with x and y fields in data. $.my will check
if x has 1–2 digits and y has 2–3 digits. HTML element with By the way calling
$("#example2").my({
data: {pwd:""},
ui: {
"#pass": {
bind:"pwd",
check:function (data, val) {
return (/^[a-z0-9]{3,8}$/i).test(val)?"":
"3–8 latin chars and/or nums!";
},
css:{
"yellow": /^[a-z0-9]{3,5}$/,
"green": /^[a-z0-9]{6,8}$/
}}}});
This code will create validator for #pass input, the child of #example2 element. Also the code will apply class named «yellow» if password is weak and «green» if it's ok. |
data: {{7}
size: {
width: {1}, height: {2}
},
qty: {amount: {3}, vol: {4}},
sort: "{5}",
total: {6}
}