docs: function keyup(opts, optIdx, e) {
            var elem = opts.$input.get(0),
                elemFocusPosition,
                beforeValue,
                newValue,
                selection,
                selectionLength;
  
            if ("selectionStart" in elem) {
              // Standard-compliant browsers
              elemFocusPosition = elem.selectionStart;
            } else if (document.selection) {
              // IE
              //elem.focus();
              selection = document.selection.createRange();
              selectionLength = document.selection.createRange().text.length;
              selection.moveStart("character", -elem.value.length);
              elemFocusPosition = selection.text.length - selectionLength;
            }
  
            beforeValue = elem.value;
            if (opts.pattern in FORMATTER.formatter) {
              newValue = FORMATTER.formatter[opts.pattern].getPatternValue.call(this, opts, optIdx, e, elem.value);
            } else {
              newValue = beforeValue;
            }
  
            if (newValue != beforeValue) {
              opts.$input.val(newValue).trigger("change");
              setSelectionRange(elem, elemFocusPosition + newValue.length - beforeValue.length);
            }
          }