From de40eedba2aaba2c0fa0328788b02376e15e10d5 Mon Sep 17 00:00:00 2001 From: alan bount Date: Tue, 29 Nov 2011 15:54:48 -0500 Subject: [PATCH 1/5] added quotes for element names in validator, allows names with square brackets, etc --- src/validator/validator.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/validator/validator.js b/src/validator/validator.js index 0d419b2..548ae16 100644 --- a/src/validator/validator.js +++ b/src/validator/validator.js @@ -261,7 +261,7 @@ v.fn(":radio", "Please select an option.", function(el) { var checked = false; - var els = $("[name=" + el.attr("name") + "]").each(function(i, el) { + var els = $("[name='" + el.attr("name") + "']").each(function(i, el) { if ($(el).is(":checked")) { checked = true; } @@ -578,7 +578,7 @@ // get radio groups by name inputs.filter(":radio[required]").bind("change.V", function(e) { - var els = $("[name=" + $(e.srcElement).attr("name") + "]"); + var els = $("[name='" + $(e.srcElement).attr("name") + "']"); if ((els != null) && (els.length != 0)) { self.checkValidity(els, e); } @@ -621,4 +621,4 @@ }; -})(jQuery); \ No newline at end of file +})(jQuery); From a451672750137c8c65893d105524dc8bd99360dc Mon Sep 17 00:00:00 2001 From: Olivier Poitrey Date: Wed, 28 Dec 2011 03:49:12 +0100 Subject: [PATCH 2/5] Fix pattern validator failing on optional fields if pattern doesn't allow empty value (Fix #605) --- src/validator/validator.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/validator/validator.js b/src/validator/validator.js index 59aa4ef..a643283 100644 --- a/src/validator/validator.js +++ b/src/validator/validator.js @@ -251,9 +251,8 @@ return !!v; }); - v.fn("[pattern]", function(el) { - var p = new RegExp("^" + el.attr("pattern") + "$"); - return p.test(el.val()); + v.fn("[pattern]", function(el, v) { + return v === '' || new RegExp("^" + el.attr("pattern") + "$").test(v); }); From 60197fe91074ca0a6e9a8770a33bb9d5f57a7ea0 Mon Sep 17 00:00:00 2001 From: Duc Tri Le Date: Tue, 3 Jan 2012 11:40:36 -0500 Subject: [PATCH 3/5] 375: Version C where there is flexibility to add more formatters --- src/dateinput/dateinput.js | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/dateinput/dateinput.js b/src/dateinput/dateinput.js index a66d615..018f716 100644 --- a/src/dateinput/dateinput.js +++ b/src/dateinput/dateinput.js @@ -17,8 +17,9 @@ $.tools = $.tools || {version: '@VERSION'}; - var instances = [], - tool, + var instances = [], + formatters = {}, + tool, // h=72, j=74, k=75, l=76, down=40, left=37, up=38, right=39 KEYS = [75, 76, 38, 39, 74, 72, 40, 37], @@ -28,6 +29,7 @@ conf: { format: 'mm/dd/yy', + formatter: 'default', selectors: false, yearRange: [-5, 5], lang: 'en', @@ -70,6 +72,10 @@ } }, + addFormatter: function(name, fn) { + formatters[name] = fn; + }, + localize: function(language, labels) { $.each(labels, function(key, val) { labels[key] = val.split(","); @@ -103,10 +109,9 @@ } // thanks: http://stevenlevithan.com/assets/misc/date.format.js - var Re = /d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g, tmpTag = $(""); + var tmpTag = $(""); - function format(date, fmt, lang) { - + function format(formatter, date, text, lang) { var d = date.getDate(), D = date.getDay(), m = date.getMonth(), @@ -124,16 +129,26 @@ yy: String(y).slice(2), yyyy: y }; - - var ret = fmt.replace(Re, function ($0) { - return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); - }); + + var ret = formatters[formatter](text, date, flags, lang); // a small trick to handle special characters return tmpTag.html(ret).html(); } + tool.addFormatter('default', function(text, date, flags, lang) { + return text.replace(/d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g, function ($0) { + return $0 in flags ? flags[$0] : $0; + }); + }); + + tool.addFormatter('prefixed', function(text, date, flags, lang) { + return text.replace(/%(d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*')/g, function ($0, $1) { + return $1 in flags ? flags[$1] : $0; + }); + }); + function integer(val) { return parseInt(val, 10); } @@ -296,7 +311,7 @@ if (e.isDefaultPrevented()) { return; } // formatting - input.val(format(date, conf.format, conf.lang)); + input.val(format(conf.formatter, date, conf.format, conf.lang)); // change e.type = "change"; @@ -699,7 +714,7 @@ }, getValue: function(dateFormat) { - return dateFormat ? format(value, dateFormat, conf.lang) : value; + return dateFormat ? format(conf.formatter, value, dateFormat, conf.lang) : value; }, isOpen: function() { From deda48e8b24d28d2186b76cd64a1a8a7c496bbc0 Mon Sep 17 00:00:00 2001 From: Olivier Poitrey Date: Wed, 28 Dec 2011 03:36:41 +0100 Subject: [PATCH 4/5] Fix validator removing other keyup listeners on inputs after reset (fix #390) --- src/validator/validator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/validator/validator.js b/src/validator/validator.js index 0d419b2..efecc01 100644 --- a/src/validator/validator.js +++ b/src/validator/validator.js @@ -382,7 +382,7 @@ msg.remove(); $(this).data("msg.el", null); } - }).unbind(conf.errorInputEvent || ''); + }).unbind(conf.errorInputEvent + '.v' || ''); return self; }, From 9f20c001998c86b5399748d8d089dcd480aab5ce Mon Sep 17 00:00:00 2001 From: Valentin Jacquemin Date: Mon, 16 Jan 2012 10:38:53 +0100 Subject: [PATCH 5/5] evrard proposition to fix scrollable issue described in #591 (see https://github.com/jquerytools/jquerytools/issues/591#issuecomment-3216475) --- src/scrollable/scrollable.autoscroll.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/scrollable/scrollable.autoscroll.js b/src/scrollable/scrollable.autoscroll.js index c34994f..02cc66a 100644 --- a/src/scrollable/scrollable.autoscroll.js +++ b/src/scrollable/scrollable.autoscroll.js @@ -44,6 +44,8 @@ * Fixes this bug: http://flowplayer.org/tools/forum/25/72029 */ function scroll(){ + // Fixes https://github.com/jquerytools/jquerytools/issues/591 + if (timer) clearTimeout(timer); // reset timeout, especially for onSeek event timer = setTimeout(function(){ api.next(); }, opts.interval);