Skip to content

Commit 786d7fb

Browse files
Duc Tri Ledefault_git_name
authored andcommitted
Updated from jquerytools/jquerytools.git
2 parents 46b8662 + f28847f commit 786d7fb

File tree

3 files changed

+34
-18
lines changed

3 files changed

+34
-18
lines changed

src/dateinput/dateinput.js

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717

1818
$.tools = $.tools || {version: '@VERSION'};
1919

20-
var instances = [],
21-
tool,
20+
var instances = [],
21+
formatters = {},
22+
tool,
2223

2324
// h=72, j=74, k=75, l=76, down=40, left=37, up=38, right=39
2425
KEYS = [75, 76, 38, 39, 74, 72, 40, 37],
@@ -28,6 +29,7 @@
2829

2930
conf: {
3031
format: 'mm/dd/yy',
32+
formatter: 'default',
3133
selectors: false,
3234
yearRange: [-5, 5],
3335
lang: 'en',
@@ -70,6 +72,10 @@
7072
}
7173
},
7274

75+
addFormatter: function(name, fn) {
76+
formatters[name] = fn;
77+
},
78+
7379
localize: function(language, labels) {
7480
$.each(labels, function(key, val) {
7581
labels[key] = val.split(",");
@@ -103,10 +109,9 @@
103109
}
104110

105111
// thanks: http://stevenlevithan.com/assets/misc/date.format.js
106-
var Re = /d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g, tmpTag = $("<a/>");
112+
var tmpTag = $("<a/>");
107113

108-
function format(date, fmt, lang) {
109-
114+
function format(formatter, date, text, lang) {
110115
var d = date.getDate(),
111116
D = date.getDay(),
112117
m = date.getMonth(),
@@ -124,16 +129,26 @@
124129
yy: String(y).slice(2),
125130
yyyy: y
126131
};
127-
128-
var ret = fmt.replace(Re, function ($0) {
129-
return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
130-
});
132+
133+
var ret = formatters[formatter](text, date, flags, lang);
131134

132135
// a small trick to handle special characters
133136
return tmpTag.html(ret).html();
134137

135138
}
136139

140+
tool.addFormatter('default', function(text, date, flags, lang) {
141+
return text.replace(/d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g, function ($0) {
142+
return $0 in flags ? flags[$0] : $0;
143+
});
144+
});
145+
146+
tool.addFormatter('prefixed', function(text, date, flags, lang) {
147+
return text.replace(/%(d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*')/g, function ($0, $1) {
148+
return $1 in flags ? flags[$1] : $0;
149+
});
150+
});
151+
137152
function integer(val) {
138153
return parseInt(val, 10);
139154
}
@@ -296,7 +311,7 @@
296311
if (e.isDefaultPrevented()) { return; }
297312

298313
// formatting
299-
input.val(format(date, conf.format, conf.lang));
314+
input.val(format(conf.formatter, date, conf.format, conf.lang));
300315

301316
// change
302317
e.type = "change";
@@ -699,7 +714,7 @@
699714
},
700715

701716
getValue: function(dateFormat) {
702-
return dateFormat ? format(value, dateFormat, conf.lang) : value;
717+
return dateFormat ? format(conf.formatter, value, dateFormat, conf.lang) : value;
703718
},
704719

705720
isOpen: function() {

src/scrollable/scrollable.autoscroll.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
* Fixes this bug: http://flowplayer.org/tools/forum/25/72029
4545
*/
4646
function scroll(){
47+
// Fixes https://github.com/jquerytools/jquerytools/issues/591
48+
if (timer) clearTimeout(timer); // reset timeout, especially for onSeek event
4749
timer = setTimeout(function(){
4850
api.next();
4951
}, opts.interval);

src/validator/validator.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -254,14 +254,13 @@
254254
return !!v;
255255
});
256256

257-
v.fn("[pattern]", function(el) {
258-
var p = new RegExp("^" + el.attr("pattern") + "$");
259-
return p.test(el.val());
257+
v.fn("[pattern]", function(el, v) {
258+
return v === '' || new RegExp("^" + el.attr("pattern") + "$").test(v);
260259
});
261260

262261
v.fn(":radio", "Please select an option.", function(el) {
263262
var checked = false;
264-
var els = $("[name=" + el.attr("name") + "]").each(function(i, el) {
263+
var els = $("[name='" + el.attr("name") + "']").each(function(i, el) {
265264
if ($(el).is(":checked")) {
266265
checked = true;
267266
}
@@ -382,7 +381,7 @@
382381
msg.remove();
383382
$(this).data("msg.el", null);
384383
}
385-
}).unbind(conf.errorInputEvent || '');
384+
}).unbind(conf.errorInputEvent + '.v' || '');
386385
return self;
387386
},
388387

@@ -578,7 +577,7 @@
578577

579578
// get radio groups by name
580579
inputs.filter(":radio[required]").bind("change.V", function(e) {
581-
var els = $("[name=" + $(e.srcElement).attr("name") + "]");
580+
var els = $("[name='" + $(e.srcElement).attr("name") + "']");
582581
if ((els != null) && (els.length != 0)) {
583582
self.checkValidity(els, e);
584583
}
@@ -621,4 +620,4 @@
621620

622621
};
623622

624-
})(jQuery);
623+
})(jQuery);

0 commit comments

Comments
 (0)