Formatter.prototype.resetPattern = function (str) { // Update opts to hold new pattern this.opts.patterns = str ? this._specFromSinglePattern(str) : this.opts.patterns; // Get current state this.sel = inptSel.get(this.el); this.val = this.el.value; // Init values this.delta = 0; // Remove all formatted chars from val this._removeChars(); this.patternMatcher = patternMatcher(this.opts.patterns); // Update pattern var newPattern = this.patternMatcher.getPattern(this.val); this.mLength = newPattern.mLength; this.chars = newPattern.chars; this.inpts = newPattern.inpts; // Format on start this._processKey('', false, true); };
// // Class Constructor - Called with new Formatter(el, opts) // Responsible for setting up required instance variables, and // attaching the event listener to the element. // function Formatter(el, opts) { // Cache this var self = this; // Make sure we have an element. Make accesible to instance self.el = el; if (!self.el) { throw new TypeError('Must provide an existing element'); } // Merge opts with defaults self.opts = utils.extend({}, defaults, opts); // 1 pattern is special case if (typeof self.opts.pattern !== 'undefined') { self.opts.patterns = self._specFromSinglePattern(self.opts.pattern); delete self.opts.pattern; } // Make sure we have valid opts if (typeof self.opts.patterns === 'undefined') { throw new TypeError('Must provide a pattern or array of patterns'); } self.patternMatcher = patternMatcher(self.opts.patterns); // Upate pattern with initial value self._updatePattern(); // Init values self.hldrs = {}; self.focus = 0; // Add Listeners utils.addListener(self.el, 'keydown', function (evt) { self._keyDown(evt); }); utils.addListener(self.el, 'keypress', function (evt) { self._keyPress(evt); }); utils.addListener(self.el, 'paste', function (evt) { self._paste(evt); }); // Persistence if (self.opts.persistent) { // Format on start self._processKey('', false); self.el.blur(); // Add Listeners utils.addListener(self.el, 'focus', function (evt) { self._focus(evt); }); utils.addListener(self.el, 'click', function (evt) { self._focus(evt); }); utils.addListener(self.el, 'touchstart', function (evt) { self._focus(evt); }); } }