non e' elementare farlo per bene:
fino a farlo apparire al focus non c'e' problema
cambi
codice:
} else {
$(this).bind(options.eventName, show);
in
codice:
} else {
$(this).bind(options.eventName+((options.eventName!='focus')?' focus':''), show);
ma non si puo' settare l' onblur allo stesso modo, altrimenti non operi piu' col picker perche' usandolo il campo perde immediatamente il focus
si puo' pensare di settare un controllo sulla pressione del tasto tab a livello di documento
codice:
$(document).bind('mousedown', {cal: cal}, hide);
return false;
},
hide = function (ev) {
if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
ev.data.cal.hide();
}
$(document).unbind('mousedown', hide);
}
},
diventa
codice:
$(document).bind('mousedown', {cal: cal}, hide);
$(document).bind('keypress keydown', {cal: cal}, hideFromTab);
return false;
},
hideFromTab = function(ev){
if(ev.keyCode==9) hide(ev);
},
hide = function (ev) {
if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
ev.data.cal.hide();
}
$(document).unbind('mousedown', hide);
$(document).unbind('keypress keydown', hideFromTab);
}
},
il limite resta che se si apre e si opera col picker, la pressione del tab chiude solo il picker senza spostare il focus
ma se ci si sposta tramite tab si apre/chiude e sposta il focus al campo successivo