diff --git a/index.htm b/index.htm index 4f7d6f4..4f9622e 100644 --- a/index.htm +++ b/index.htm @@ -71,6 +71,10 @@ $(this).removeClass("error"); } }); + + // Destroy test + $("#time5").timePicker(); + $("#time5").timePicker('destroy'); }); @@ -133,5 +137,10 @@

jQuery timePicker

} }); +
+
// Destroy test
+$("#time5").timePicker();
+$("#time5").timePicker('destroy');
+ diff --git a/jquery.timePicker.js b/jquery.timePicker.js index 41b35c1..91dce69 100644 --- a/jquery.timePicker.js +++ b/jquery.timePicker.js @@ -19,13 +19,34 @@ */ (function($){ - $.fn.timePicker = function(options) { - // Build main options before element iteration - var settings = $.extend({}, $.fn.timePicker.defaults, options); - return this.each(function() { - $.timePicker(this, settings); - }); + var methods = { + init : function(options) { + // Build main options before element iteration + var settings = $.extend({}, $.fn.timePicker.defaults, options); + + return this.each(function() { + $.timePicker(this, settings); + }); + }, + destroy : function() { + return this.each(function(){ + if (this.timePicker) { + delete this.timePicker; + $('div.time-picker').remove(); + } + }); + } + }; + + $.fn.timePicker = function(method) { + if ( methods[method] ) { + return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof method === 'object' || ! method ) { + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + method + ' does not exist on jQuery.tooltip' ); + } }; $.timePicker = function (elm, settings) { @@ -33,7 +54,7 @@ return e.timePicker || (e.timePicker = new jQuery._timePicker(e, settings)); }; - $.timePicker.version = '0.3'; + $.timePicker.version = '0.4'; $._timePicker = function(elm, settings) { diff --git a/jquery.timePicker.min.js b/jquery.timePicker.min.js index 2e092fd..6c627c1 100644 --- a/jquery.timePicker.min.js +++ b/jquery.timePicker.min.js @@ -1 +1 @@ -(function(a){function g(a){a.setFullYear(2001),a.setMonth(0),a.setDate(0);return a}function f(a,b){if(a){var c=a.split(b.separator),d=parseFloat(c[0]),e=parseFloat(c[1]);b.show24Hours||(d===12&&a.indexOf("AM")!==-1?d=0:d!==12&&a.indexOf("PM")!==-1&&(d+=12));var f=new Date(0,0,0,d,e,0);return g(f)}return null}function e(a,b){return typeof a=="object"?g(a):f(a,b)}function d(a){return(a<10?"0":"")+a}function c(a,b){var c=a.getHours(),e=b.show24Hours?c:(c+11)%12+1,f=a.getMinutes();return d(e)+b.separator+d(f)+(b.show24Hours?"":c<12?" AM":" PM")}function b(b,c,d,e){b.value=a(c).text(),a(b).change(),a.browser.msie||b.focus(),d.hide()}a.fn.timePicker=function(b){var c=a.extend({},a.fn.timePicker.defaults,b);return this.each(function(){a.timePicker(this,c)})},a.timePicker=function(b,c){var d=a(b)[0];return d.timePicker||(d.timePicker=new jQuery._timePicker(d,c))},a.timePicker.version="0.3",a._timePicker=function(d,h){var i=!1,j=!1,k=e(h.startTime,h),l=e(h.endTime,h),m="selected",n="li."+m;a(d).attr("autocomplete","OFF");var o=[],p=new Date(k);while(p<=l)o[o.length]=c(p,h),p=new Date(p.setMinutes(p.getMinutes()+h.step));var q=a('
'),r=a("");for(var s=0;s"+o[s]+"");q.append(r),q.appendTo("body").hide(),q.mouseover(function(){i=!0}).mouseout(function(){i=!1}),a("li",r).mouseover(function(){j||(a(n,q).removeClass(m),a(this).addClass(m))}).mousedown(function(){i=!0}).click(function(){b(d,this,q,h),i=!1});var t=function(){if(q.is(":visible"))return!1;a("li",q).removeClass(m);var b=a(d).offset();q.css({top:b.top+d.offsetHeight,left:b.left}),q.show();var e=d.value?f(d.value,h):k,i=k.getHours()*60+k.getMinutes(),j=e.getHours()*60+e.getMinutes()-i,n=Math.round(j/h.step),o=g(new Date(0,0,0,0,n*h.step+i,0));o=kf+q[0].offsetHeight&&(q[0].scrollTop=f+i.offsetHeight)):(e.removeClass(m),i=a("li:first",r).addClass(m)[0],q[0].scrollTop=0);return!1;case 13:if(q.is(":visible")){var k=a(n,r)[0];b(d,k,q,h)}return!1;case 27:q.hide();return!1}return!0}),a(d).keyup(function(a){j=!1}),this.getTime=function(){return f(d.value,h)},this.setTime=function(b){d.value=c(e(b,h),h),a(d).change()}},a.fn.timePicker.defaults={step:30,startTime:new Date(0,0,0,0,0,0),endTime:new Date(0,0,0,23,30,0),separator:":",show24Hours:!0}})(jQuery) \ No newline at end of file +(function(a){function c(b,c,d,e){b.value=a(c).text();a(b).change();if(!a.browser.msie){b.focus()}d.hide()}function d(a,b){var c=a.getHours();var d=b.show24Hours?c:(c+11)%12+1;var f=a.getMinutes();return e(d)+b.separator+e(f)+(b.show24Hours?"":c<12?" AM":" PM")}function e(a){return(a<10?"0":"")+a}function f(a,b){return typeof a=="object"?h(a):g(a,b)}function g(a,b){if(a){var c=a.split(b.separator);var d=parseFloat(c[0]);var e=parseFloat(c[1]);if(!b.show24Hours){if(d===12&&a.indexOf("AM")!==-1){d=0}else if(d!==12&&a.indexOf("PM")!==-1){d+=12}}var f=new Date(0,0,0,d,e,0);return h(f)}return null}function h(a){a.setFullYear(2001);a.setMonth(0);a.setDate(0);return a}var b={init:function(b){var c=a.extend({},a.fn.timePicker.defaults,b);return this.each(function(){a.timePicker(this,c)})},destroy:function(){return this.each(function(){if(this.timePicker){delete this.timePicker;a("div.time-picker").remove()}})}};a.fn.timePicker=function(c){if(b[c]){return b[c].apply(this,Array.prototype.slice.call(arguments,1))}else if(typeof c==="object"||!c){return b.init.apply(this,arguments)}else{a.error("Method "+c+" does not exist on jQuery.tooltip")}};a.timePicker=function(b,c){var d=a(b)[0];return d.timePicker||(d.timePicker=new jQuery._timePicker(d,c))};a.timePicker.version="0.4";a._timePicker=function(b,e){var i=false;var j=false;var k=f(e.startTime,e);var l=f(e.endTime,e);var m="selected";var n="li."+m;a(b).attr("autocomplete","OFF");var o=[];var p=new Date(k);while(p<=l){o[o.length]=d(p,e);p=new Date(p.setMinutes(p.getMinutes()+e.step))}var q=a('
');var r=a("");for(var s=0;s"+o[s]+"")}q.append(r);q.appendTo("body").hide();q.mouseover(function(){i=true}).mouseout(function(){i=false});a("li",r).mouseover(function(){if(!j){a(n,q).removeClass(m);a(this).addClass(m)}}).mousedown(function(){i=true}).click(function(){c(b,this,q,e);i=false});var t=function(){if(q.is(":visible")){return false}a("li",q).removeClass(m);var c=a(b).offset();q.css({top:c.top+b.offsetHeight,left:c.left});q.show();var f=b.value?g(b.value,e):k;var i=k.getHours()*60+k.getMinutes();var j=f.getHours()*60+f.getMinutes()-i;var n=Math.round(j/e.step);var o=h(new Date(0,0,0,0,n*e.step+i,0));o=kg+q[0].offsetHeight){q[0].scrollTop=g+i.offsetHeight}}else{f.removeClass(m);i=a("li:first",r).addClass(m)[0];q[0].scrollTop=0}return false;break;case 13:if(q.is(":visible")){var k=a(n,r)[0];c(b,k,q,e)}return false;break;case 27:q.hide();return false;break}return true});a(b).keyup(function(a){j=false});this.getTime=function(){return g(b.value,e)};this.setTime=function(c){b.value=d(f(c,e),e);a(b).change()}};a.fn.timePicker.defaults={step:30,startTime:new Date(0,0,0,0,0,0),endTime:new Date(0,0,0,23,30,0),separator:":",show24Hours:true}})(jQuery) \ No newline at end of file