diff --git a/src/datepickr.js b/src/datepickr.js index a64e951..deb3d52 100644 --- a/src/datepickr.js +++ b/src/datepickr.js @@ -77,7 +77,6 @@ datepickr.init = function (element, instanceConfig) { documentClick, calendarClick, buildCalendar, - getOpenEvent, bind, open, close, @@ -368,16 +367,16 @@ datepickr.init = function (element, instanceConfig) { wrapperElement.appendChild(calendarContainer); }; - getOpenEvent = function () { + bind = function () { + var openEvent = 'click'; + if (self.element.nodeName === 'INPUT') { - return 'focus'; + openEvent = 'focus'; + self.addEventListener(self.element, 'blur', close, false); } - return 'click'; - }; - bind = function () { - self.addEventListener(self.element, getOpenEvent(), open, false); - self.addEventListener(calendarContainer, 'click', calendarClick, false); + self.addEventListener(self.element, openEvent, open, false); + self.addEventListener(calendarContainer, 'mousedown', calendarClick, false); }; open = function () { @@ -395,7 +394,9 @@ datepickr.init = function (element, instanceConfig) { element; self.removeEventListener(document, 'click', documentClick, false); - self.removeEventListener(self.element, getOpenEvent(), open, false); + self.removeEventListener(self.element, 'focus', open, false); + self.removeEventListener(self.element, 'blur', close, false); + self.removeEventListener(self.element, 'click', open, false); parent = self.element.parentNode; parent.removeChild(calendarContainer); diff --git a/src/datepickr.min.js b/src/datepickr.min.js index d0262c1..cbf2ee9 100644 --- a/src/datepickr.min.js +++ b/src/datepickr.min.js @@ -1,13 +1,14 @@ var datepickr=function(d,c){var f,h,a=[],k;datepickr.prototype=datepickr.init.prototype;h=function(a){a._datepickr&&a._datepickr.destroy();a._datepickr=new datepickr.init(a,c);return a._datepickr};if(d.nodeName)return h(d);f=datepickr.prototype.querySelectorAll(d);if(1===f.length)return h(f[0]);for(k=0;ka?"0"+a:a},D:function(){return a.l10n.weekdays.shorthand[c.w()]},j:function(){return d.getDate()},l:function(){return a.l10n.weekdays.longhand[c.w()]},w:function(){return d.getDay()},F:function(){return p(c.n()-1,!1)},m:function(){var a=c.n();return 10>a?"0"+a:a},M:function(){return p(c.n()-1,!0)},n:function(){return d.getMonth()+1},U:function(){return d.getTime()/1E3},y:function(){return String(c.Y()).substring(2)},Y:function(){return d.getFullYear()}},f=b.split(""); -a.forEach(f,function(a,b){c[a]&&"\\"!==f[b-1]?q+=c[a]():"\\"!==a&&(q+=a)});return q};p=function(b,e){return!0===e?a.l10n.months.shorthand[b]:a.l10n.months.longhand[b]};w=function(b,e,c,d){return b===d&&a.currentMonthView===e&&a.currentYearView===c};C=function(){var b=document.createElement("thead"),e=a.l10n.firstDayOfWeek,c=a.l10n.weekdays.shorthand;0"+c.join("")+"";u.appendChild(b)};r=function(){var b= -(new Date(a.currentYearView,a.currentMonthView,1)).getDay(),c=h.numDays(),d=document.createDocumentFragment(),g=document.createElement("tr"),k,l="",p="",m="",n,b=b-a.l10n.firstDayOfWeek;0>b&&(b+=7);k=b;v.innerHTML="";0 ');for(b=1;b<=c;b++){7===k&&(d.appendChild(g),g=document.createElement("tr"),k=0);l=w(f.day(),f.month.integer(),f.year(),b)?" today":"";a.selectedDate&&(p=w(a.selectedDate.day,a.selectedDate.month,a.selectedDate.year,b)?" selected":""); -if(a.config.minDate||a.config.maxDate)n=(new Date(a.currentYearView,a.currentMonthView,b)).getTime(),m="",a.config.minDate&&na.config.maxDate&&(m=" disabled");g.innerHTML+=''+b+"";k++}d.appendChild(g);v.appendChild(d)};x=function(){t.innerHTML=h.string()+" "+a.currentYearView};D=function(){var a=document.createElement("div");a.className="datepickr-months";a.innerHTML='<>'; -a.appendChild(t);x();l.appendChild(a)};E=function(){0>a.currentMonthView&&(a.currentYearView--,a.currentMonthView=11);11"+c.join("")+"";x.appendChild(b)};t=function(){var b= +(new Date(a.currentYearView,a.currentMonthView,1)).getDay(),c=h.numDays(),d=document.createDocumentFragment(),g=document.createElement("tr"),k,m="",p="",l="",n,b=b-a.l10n.firstDayOfWeek;0>b&&(b+=7);k=b;y.innerHTML="";0 ');for(b=1;b<=c;b++){7===k&&(d.appendChild(g),g=document.createElement("tr"),k=0);m=z(f.day(),f.month.integer(),f.year(),b)?" today":"";a.selectedDate&&(p=z(a.selectedDate.day,a.selectedDate.month,a.selectedDate.year,b)?" selected":""); +if(a.config.minDate||a.config.maxDate)n=(new Date(a.currentYearView,a.currentMonthView,b)).getTime(),l="",a.config.minDate&&na.config.maxDate&&(l=" disabled");g.innerHTML+=''+b+"";k++}d.appendChild(g);y.appendChild(d)};A=function(){w.innerHTML=h.string()+" "+a.currentYearView};D=function(){var a=document.createElement("div");a.className="datepickr-months";a.innerHTML='<>'; +a.appendChild(w);A();m.appendChild(a)};E=function(){0>a.currentMonthView&&(a.currentYearView--,a.currentMonthView=11);11