mootools-datepicker icon indicating copy to clipboard operation
mootools-datepicker copied to clipboard

Toggles do not work always

Open cyberbeat opened this issue 10 years ago • 0 comments

In following cases toggles don't work:

<a id="toggle">Some text <img src="someimage.png"/></a>

there is no event.preventDefault, when clicking on the img, so the page is reloaded

<div id="toggle">Some text <img src="someimage.png"/></div>

In this case, the calendar cannot be closed not at all.

The problematic code is on both cases picker.atach.js:

in first case event.stop(); is not executed:, because tag = img

var getOpenEvent = function(element){ return function(event){ var tag = event.target.get('tag'); if (tag == 'input' && event.type == 'click' && !element.match(':focus') || (self.opened && self.input == element)) return; if (tag == 'a') event.stop(); self.position(element); self.open(); self.fireEvent('attached', [event, element]); }; };

in second case the close function has no effect, because here isA is always false

var closeEvent = function(event){ var stopInput = self.options.blockKeydown && event.type == 'keydown' && !(['tab', 'esc'].contains(event.key)), isCloseKey = event.type == 'keydown' && (['tab', 'esc'].contains(event.key)), isA = event.target.get('tag') == 'a';

        if (stopInput || isA) event.preventDefault();
        if (isCloseKey || isA) self.close();
    };

cyberbeat avatar Jun 23 '15 23:06 cyberbeat