From 3a816606e393171cba2903d2e6d6575591ffcf43 Mon Sep 17 00:00:00 2001 From: Shin Date: Tue, 24 Jul 2012 13:09:14 +0900 Subject: [PATCH] fixed bug for null selecting, fixed bug for tab opening for firefox because of stopPropagation and regen --- jqselectable/jqselectable.js | 6 +++--- jqselectable/jqselectable.min.js | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/jqselectable/jqselectable.js b/jqselectable/jqselectable.js index ff8d4bc..1d1b949 100644 --- a/jqselectable/jqselectable.js +++ b/jqselectable/jqselectable.js @@ -7,7 +7,7 @@ * @license The MIT License * @link https://github.com/5509/jQselectable * - * 2012-04-10 19:50 + * 2012-07-24 13:06 */ ;(function($, window, document, undefined) { @@ -358,7 +358,7 @@ } setTimeout(function() { - self.selected.focus(); + if ( self.selected ) self.selected.focus(); }, isNaN(conf.showDuration) ? (function() { var duration = conf.showDuration; return (/slow/.test(duration)) ? 610 : @@ -486,8 +486,8 @@ var target = ev.target, id = target.getAttribute('data-id'); - ev.stopPropagation(); if ( id && id in jQselectableIds ) { + ev.stopPropagation(); $.each(jQselectableIds, function(key, val) { if ( key === id ) return; val._hide(); diff --git a/jqselectable/jqselectable.min.js b/jqselectable/jqselectable.min.js index de88fd3..cfe05b6 100644 --- a/jqselectable/jqselectable.min.js +++ b/jqselectable/jqselectable.min.js @@ -1,11 +1,12 @@ /*! * jQselectable * - * @version 3.0 + * @version 3.1 * @author nori (norimania@gmail.com) * @copyright 5509 (http://5509.me/) * @license The MIT License * @link https://github.com/5509/jQselectable * - * 2012-04-10 00:00 - */(function(a,b,c,d){function g(a,b){var c=0,d=a.length;for(;c",'',b,"",""].join(""))},_setPosition:function(){var a=this,b=a.conf,c=a.$view,e=a.$list,f=d,g=c.offset(),j=h(),k=i();k/2":['"].join("");a+=f;a+=d.disabled?"":"";g&&/br/.test(g)&&(a+="
")});c.selected_id||(c.selected_id=b[0].value);return a},_createList:function(){var b=this,c=b.conf,e=d,f=b.id+"_mat",h="sctble_mat "+b.attr.klass,i='
',j=c.height==="auto"?"auto":c.height+"px",k=b.$elem;b.has_no_maxheight?e="height: "+j+"; overflow-y: scroll;":e="max-height: "+j+";";i=i+'
';b.has_group=k.find("optgroup").length;if(b.has_group){b.list_klass="sctble optgroup";i+=function(){var a="
",c=k.find("optgroup");g(c,function(c,d){var e=d.getElementsByTagName("option");a+="
"+d.label+"
";a=b._addItem(a,e);a+="
"});a+="
";return a}()}else{c.style==="selectable"?b.list_klass="sctble nooptgroup":b.list_klass="sBox nooptgroup";i+=function(){var a="";a=b._addItem(a,b.$option);return a}()}i+="
";return a(i).addClass(b.list_klass)},_eventify:function(){var a=this,b=a.$elem,c=a.$view,d=a.$list;c.bind("click",function(){if(a.disabled)return;b.trigger("jQselectable.click")});d.delegate("a","click",function(a){var c=this;a.preventDefault();b.trigger("jQselectable.change",{value:c.getAttribute("data-value"),anchor:c})});b.bind("jQselectable.click",function(b){a._show()});b.bind("jQselectable.change",function(b,c){a._change(c.value);a._removeSelected();a._addSelected(c.anchor);a.$view.focus()})},_show:function(){var a=this,b=a.conf,c=a.$list,e=a.$view,f=d,g=d,j=d,k=d;a._setPosition();a.state=!0;if(b.show==="slideDown"){f=h();g=i();j=e.offset();k=g/2",'',k,"",""].join(""))},_setPosition:function(){var l=this,n=l.conf,o=l.$view,m=l.$list,j=c,q=o.offset(),k=g(),p=a();if(p/2":['"].join(""));k=k+r;k=k+(n.disabled?"":"");if(m&&/br/.test(m)){k=k+"
"}});if(!j.selected_id){j.selected_id=l[0].value}return k},_createList:function(){var m=this,n=m.conf,k=c,q=m.id+"_mat",o="sctble_mat "+m.attr.klass,p='
',j=(n.height==="auto")?"auto":n.height+"px",l=m.$elem;if(m.has_no_maxheight){k="height: "+j+"; overflow-y: scroll;"}else{k="max-height: "+j+";"}p=p+'
';m.has_group=l.find("optgroup").length;if(m.has_group){m.list_klass="sctble optgroup";p=p+(function(){var s="
",r=l.find("optgroup");h(r,function(t,v){var u=v.getElementsByTagName("option");s=s+("
"+v.label+"
");s=m._addItem(s,u);s=s+"
"});s=s+"
";return s}())}else{if(n.style==="selectable"){m.list_klass="sctble nooptgroup"}else{m.list_klass="sBox nooptgroup"}p=p+(function(){var r="";r=m._addItem(r,m.$option);return r}())}p=p+"
";return d(p).addClass(m.list_klass)},_eventify:function(){var k=this,j=k.$elem,m=k.$view,l=k.$list;m.bind("click",function(){if(k.disabled){return}j.trigger("jQselectable.click")});l.delegate("a","click",function(o){var n=this;o.preventDefault();j.trigger("jQselectable.change",{value:n.getAttribute("data-value"),anchor:n})});j.bind("jQselectable.click",function(n){k._show()});j.bind("jQselectable.change",function(n,o){k._change(o.value);k._removeSelected();k._addSelected(o.anchor);k.$view.focus()})},_show:function(){var k=this,m=k.conf,l=k.$list,o=k.$view,j=c,q=c,p=c,n=c;k._setPosition();k.state=true;if(m.show==="slideDown"){j=g();q=a();p=o.offset();n=q/2<(p.top-j);if(n){l.css({top:p.top+m.top-5});l.animate({height:"toggle",top:parseInt(l.css("top"))-k.list_height},{easing:"swing",duration:m.showDuration}).css({opacity:m.opacity})}else{l.stop(true,true).slideDown(m.showDuration).css({opacity:m.opacity})}}else{if(m.show==="fadeIn"){l.css({display:"block",opacity:0}).stop(true,true).fadeTo(m.showDuration,m.opacity)}else{l.show().css({opacity:m.opacity})}}setTimeout(function(){if(k.selected){k.selected.focus()}},isNaN(m.showDuration)?(function(){var r=m.showDuration;return(/slow/.test(r))?610:(/fast/.test(r))?210:410}()):m.showDuration+10)},_hide:function(j){var k=this,m=k.conf,l=k.$list;if(!k.state){return}k.state=false;switch(m.hide){case"slideUp":l.stop(true,true).slideUp(m.hideDuration);break;case"fadeOut":l.stop(true,true).fadeOut(m.hideDuration);break;default:l.hide()}if(!j){return}setTimeout(function(){k.$view.focus()},isNaN(m.showDuration)?(function(){var n=m.showDuration;return(/slow/.test(n))?610:(/fast/.test(n))?210:410}()):m.hideDuration+10)},_change:function(k){var j=this;j.$view.find("span").text(j.map[k].text);j.$elem.val(k)},_callAPI:function(l,k){var j=this;if(typeof j[l]!=="function"){throw new Error(l+" does not exist of "+j.namespace+" methods.")}else{if(/^_/.test(l)&&typeof j[l]==="function"){throw new Error("Method begins with an underscore are not exposed.")}}return j[l](k)},_escapeHtml:function(j){return d("
").text(j).html()},refresh:function(){var j=this;j.destroy();j._build();j._eventify();j.$elem.trigger("jQselectable.refresh")},disable:function(){var j=this;j.disabled=true;j.$view.addClass("disabled");j.$elem.trigger("jQselectable.disable")},enable:function(){var j=this;j.disabled=false;j.$view.removeClass("disabled");j.$elem.trigger("jQselectable.enable")},destroy:function(){var j=this;j.map={};j.$view.remove();j.$list.remove();j.$elem.show();j.$elem.trigger("jQselectable.destroy")}};function h(k,n){var m=0,j=k.length;for(;m