inputmask-multi
Advanced tools
Comparing version 1.1.1 to 1.2.0
@@ -6,7 +6,6 @@ /* | ||
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) | ||
* Version: 1.1.1 | ||
* Version: 1.2.0 | ||
* | ||
* Requriements: | ||
* https://github.com/RobinHerbots/jquery.inputmask | ||
* https://github.com/private-face/jquery.bind-first | ||
*/ | ||
@@ -197,16 +196,34 @@ (function ($) { | ||
var maskUnbind = function() { | ||
$(this).unbind(".inputmasks"); | ||
$(this).off(".inputmasks"); | ||
} | ||
var maskRebind = function() { | ||
maskUnbind.call(this); | ||
var unbindOriginal = function() { | ||
events = $._data(this, "events"); | ||
var types = ["keydown", "keypress", "paste", "dragdrop", "drop", "setvalue", "reset", "cut", "blur"] | ||
var that = this; | ||
$.each(types, function(idx, evt_name) { | ||
$.each(that.inputmask.events[evt_name], function(evt_idx, evt_func) { | ||
$(that).off(evt_name, evt_func); | ||
}); | ||
}); | ||
} | ||
var runOriginal = function(event) { | ||
var that = this; | ||
$.each(this.inputmask.events[event.type], function(evt_idx, evt_func) { | ||
evt_func.call(that, event); | ||
}); | ||
} | ||
var maskBind = function() { | ||
$(this) | ||
.bindFirst("keypress.inputmasks", masksKeyPress) | ||
.bindFirst("input.inputmasks", masksPaste) | ||
.bindFirst("paste.inputmasks", masksPaste) | ||
.bindFirst("dragdrop.inputmasks", masksPaste) | ||
.bindFirst("drop.inputmasks", masksPaste) | ||
.bindFirst("keydown.inputmasks", masksKeyDown) | ||
.bindFirst("setvalue.inputmasks", masksSetValue) | ||
.bind("blur.inputmasks", masksChange); | ||
.on("keydown.inputmasks", masksKeyDown) | ||
.on("keypress.inputmasks", masksKeyPress) | ||
.on("paste.inputmasks", masksPaste) | ||
.on("dragdrop.inputmasks", masksPaste) | ||
.on("drop.inputmasks", masksPaste) | ||
.on("cut.inputmasks", masksPaste) | ||
.on("setvalue.inputmasks", masksChange) | ||
.on("blur.inputmasks", masksChange) | ||
.on("reset.inputmasks", masksChange); | ||
} | ||
@@ -220,4 +237,3 @@ | ||
caretPos = caretApply.call(this, this.inputmasks.oldmatch.mask, match.mask, caret.call(this)); | ||
} | ||
if (newtext !== undefined) { | ||
} else { | ||
if (this.inputmask) { | ||
@@ -231,2 +247,3 @@ this.inputmask.remove(); | ||
})); | ||
unbindOriginal.call(this); | ||
if (newtext === undefined) { | ||
@@ -238,3 +255,2 @@ caret.call(this, caretPos.begin, caretPos.end); | ||
maskOpts.onMaskChange.call(this, match.obj, match.determined); | ||
return true; | ||
} | ||
@@ -246,15 +262,17 @@ | ||
if (match) { | ||
maskUnbind.call(this); | ||
if (insert) { | ||
maskApply.call(this, match); | ||
$(this).trigger(e); | ||
runOriginal.call(this, e); | ||
} else { | ||
$(this).trigger(e); | ||
runOriginal.call(this, e); | ||
maskApply.call(this, match); | ||
} | ||
maskRebind.call(this); | ||
} else { | ||
if (!insert || !this.inputmasks.insertMode) { | ||
maskInit.call(this, text); | ||
} | ||
} | ||
e.stopImmediatePropagation(); | ||
return false; | ||
} | ||
runOriginal.call(this, e); | ||
return true; | ||
@@ -264,2 +282,6 @@ } | ||
var masksKeyDown = function(e) { | ||
if (e.metaKey) { | ||
runOriginal.call(this, e); | ||
return true; | ||
} | ||
var maskOpts = this.inputmasks.options; | ||
@@ -271,3 +293,3 @@ e = e || window.event; | ||
var caretPos = caret.call(this); | ||
if (caretPos.begin == caretPos.end || (!this.inputmasks.insertMode && caretPos.begin == caretPos.end-1)) { | ||
if (caretPos.begin == caretPos.end) { | ||
var pos = caretPos.begin; | ||
@@ -282,6 +304,3 @@ do { | ||
} else { | ||
var test = text.substring(0, caretPos.begin) + text.substring(caretPos.end); | ||
if (test.search(maskOpts.match) == -1) { | ||
text = test; | ||
} | ||
text = text.substring(0, caretPos.begin) + text.substring(caretPos.end); | ||
} | ||
@@ -293,2 +312,3 @@ return keyboardApply.call(this, e, text, false); | ||
} | ||
runOriginal.call(this, e); | ||
return true; | ||
@@ -298,2 +318,6 @@ } | ||
var masksKeyPress = function(e) { | ||
if (e.metaKey) { | ||
runOriginal.call(this, e); | ||
return true; | ||
} | ||
var text = this.inputmask._valueGet(); | ||
@@ -303,3 +327,7 @@ e = e || window.event; | ||
caretPos = caret.call(this); | ||
text = text.substring(0, caretPos.begin) + c + text.substring(caretPos.end); | ||
if (caretPos.begin == caretPos.end && text.charAt(caretPos.begin) == this.inputmasks.placeholder) { | ||
text = text.substring(0, caretPos.begin) + c + text.substring(caretPos.end + 1); | ||
} else { | ||
text = text.substring(0, caretPos.begin) + c + text.substring(caretPos.end); | ||
} | ||
return keyboardApply.call(this, e, text, true); | ||
@@ -309,20 +337,23 @@ } | ||
var masksChange = function(e) { | ||
var match = maskMatch.call(this, this.inputmask._valueGet()); | ||
maskApply.call(this, match); | ||
maskRebind.call(this); | ||
maskInit.call(this); | ||
//runOriginal.call(this, e); | ||
return true; | ||
} | ||
var masksSetValue = function(e) { | ||
maskInit.call(this); | ||
e.stopImmediatePropagation(); | ||
var masksPaste = function(e) { | ||
var input = this; | ||
setTimeout(function() { | ||
maskInit.call(input); | ||
//runOriginal.call(input, e); | ||
}, 0); | ||
return true; | ||
} | ||
var maskInit = function() { | ||
var text; | ||
if (this.inputmask && this.inputmask._valueGet) { | ||
text = this.inputmask._valueGet(); | ||
} else { | ||
text = this.value; | ||
var maskInit = function(text) { | ||
if (text === undefined) { | ||
if (this.inputmask && this.inputmask._valueGet) { | ||
text = this.inputmask._valueGet(); | ||
} else { | ||
text = this.value; | ||
} | ||
} | ||
@@ -335,14 +366,4 @@ var match = maskMatch.call(this, text); | ||
maskApply.call(this, match, text); | ||
maskRebind.call(this); | ||
} | ||
var masksPaste = function(e) { | ||
var input = this; | ||
setTimeout(function() { | ||
maskInit.call(input); | ||
}, 0); | ||
e.stopImmediatePropagation(); | ||
return true; | ||
} | ||
var maskStart = function(maskOpts) { | ||
@@ -386,3 +407,3 @@ maskOpts = $.extend(true, { | ||
this.inputmasks.placeholder = maskOpts.inputmask.placeholder || Inputmask.prototype.defaults.placeholder; | ||
this.inputmasks.insertMode = maskOpts.inputmask.insertMode || Inputmask.prototype.defaults.insertMode; | ||
this.inputmasks.insertMode = (maskOpts.inputmask.insertMode !== undefined) ? maskOpts.inputmask.insertMode : Inputmask.prototype.defaults.insertMode; | ||
@@ -405,2 +426,3 @@ maskInit.call(this); | ||
maskStart.call(this, fn); | ||
maskBind.call(this); | ||
}); | ||
@@ -407,0 +429,0 @@ return this; |
@@ -6,8 +6,7 @@ /* | ||
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) | ||
* Version: 1.1.1 | ||
* Version: 1.2.0 | ||
* | ||
* Requriements: | ||
* https://github.com/RobinHerbots/jquery.inputmask | ||
* https://github.com/private-face/jquery.bind-first | ||
*/ | ||
!function(t){t.masksLoad=function(e){var i;return t.ajax({url:e,async:!1,dataType:"json",success:function(t){i=t}}),i},t.masksSort=function(e,i,s,n){return e.sort(function(e,a){for(var r=0,h=0;r<e[n].length&&h<a[n].length;){var o=e[n].charAt(r),c=a[n].charAt(h);if(s.test(o))if(s.test(c)){if(-1!=t.inArray(o,i)&&-1==t.inArray(c,i))return 1;if(-1==t.inArray(o,i)&&-1!=t.inArray(c,i))return-1;if(-1==t.inArray(o,i)&&-1==t.inArray(c,i)&&o!=c)return c>o?-1:1;r++,h++}else h++;else r++}for(;r<e[n].length||h<a[n].length;)if(r<e[n].length&&!s.test(e[n].charAt(r)))r++;else if(h<a[n].length&&!s.test(a[n].charAt(h)))h++;else{if(r<e[n].length)return 1;if(h<a[n].length)return-1}return 0}),e};var e=function(t,e){if("number"!=typeof t){if(this.setSelectionRange)t=this.selectionStart,e=this.selectionEnd;else if(document.selection&&document.selection.createRange){var i=document.selection.createRange();t=0-i.duplicate().moveStart("character",-1e5),e=t+i.text.length}return{begin:t,end:e}}if(e="number"==typeof e?e:t,this.setSelectionRange)this.setSelectionRange(t,e);else if(this.createTextRange){var i=this.createTextRange();i.collapse(!0),i.moveEnd("character",e),i.moveStart("character",t),i.select()}},i=Object.keys||function(t){if(t!==Object(t))throw new TypeError("Invalid object");var e=[];for(var i in t)e[e.length]=i;return e},s=function(t){for(var e=this.inputmasks.options,s="",n=0;n<t.length;n++){var a=t.charAt(n);if(a==this.inputmasks.placeholder)break;e.match.test(a)&&(s+=a)}for(var r in e.list){for(var h=e.list[r][e.listKey],o=!0,c=0,l=0;c<s.length&&l<h.length;){var u=h.charAt(l),p=s.charAt(c);if(e.match.test(u)||u in this.inputmasks.defs){if(!(u in this.inputmasks.defs&&this.inputmasks.defs[u].test(p)||p==u)){o=!1;break}c++,l++}else l++}if(o&&c==s.length){var m=-1==h.substr(l).search(e.match);h=h.replace(new RegExp([e.match.source].concat(i(this.inputmasks.defs)).join("|"),"g"),e.replace);var d=-1==h.substr(l).search(e.replace);return{mask:h,obj:e.list[r],determined:m,completed:d}}}return!1},n=function(t,e,i){var s=this.inputmasks.options;if(!t)return 0;for(var n=0,a=0;n<i.begin;n++)t.charAt(n)==s.replace&&a++;for(var r=0;n<i.end;n++)t.charAt(n)==s.replace&&r++;for(n=0;n<e.length&&(a>0||e.charAt(n)!=s.replace);n++)e.charAt(n)==s.replace&&a--;for(a=n;n<e.length&&r>0;n++)e.charAt(n)==s.replace&&r--;return r=n,{begin:a,end:r}},a=function(){t(this).unbind(".inputmasks")},r=function(){a.call(this),t(this).bindFirst("keypress.inputmasks",l).bindFirst("input.inputmasks",d).bindFirst("paste.inputmasks",d).bindFirst("dragdrop.inputmasks",d).bindFirst("drop.inputmasks",d).bindFirst("keydown.inputmasks",c).bindFirst("setvalue.inputmasks",p).bind("blur.inputmasks",u)},h=function(i,s){var a=this.inputmasks.options;if(i&&(void 0!==s||i.mask!=this.inputmasks.oldmatch.mask)){var r;void 0===s&&(r=n.call(this,this.inputmasks.oldmatch.mask,i.mask,e.call(this))),void 0!==s&&(this.inputmask&&this.inputmask.remove(),this.value=s),t(this).inputmask(i.mask,t.extend(!0,a.inputmask,{insertMode:this.inputmasks.insertMode})),void 0===s&&e.call(this,r.begin,r.end)}return this.inputmasks.oldmatch=i,a.onMaskChange.call(this,i.obj,i.determined),!0},o=function(e,i,n){var o=s.call(this,i);return o&&o.obj==this.inputmasks.oldmatch.obj&&o.determined==this.inputmasks.oldmatch.determined?!0:(o&&(a.call(this),n?(h.call(this,o),t(this).trigger(e)):(t(this).trigger(e),h.call(this,o)),r.call(this)),e.stopImmediatePropagation(),!1)},c=function(t){var i=this.inputmasks.options;t=t||window.event;var s=t.which||t.charCode||t.keyCode;if(8==s||46==s||this.inputmasks.iphone&&127==s){var n=this.inputmask._valueGet(),a=e.call(this);if(a.begin==a.end||!this.inputmasks.insertMode&&a.begin==a.end-1){var r=a.begin;do{46!=s&&r--;var h=n.charAt(r);n=n.substring(0,r)+n.substring(r+1)}while(r>0&&r<n.length&&h!=this.inputmasks.placeholder&&!i.match.test(h))}else{var c=n.substring(0,a.begin)+n.substring(a.end);-1==c.search(i.match)&&(n=c)}return o.call(this,t,n,!1)}return 45==s&&(this.inputmasks.insertMode=!this.inputmasks.insertMode),!0},l=function(t){var i=this.inputmask._valueGet();t=t||window.event;var s=t.which||t.charCode||t.keyCode,n=String.fromCharCode(s);return caretPos=e.call(this),i=i.substring(0,caretPos.begin)+n+i.substring(caretPos.end),o.call(this,t,i,!0)},u=function(t){var e=s.call(this,this.inputmask._valueGet());return h.call(this,e),r.call(this),!0},p=function(t){return m.call(this),t.stopImmediatePropagation(),!0},m=function(){var t;t=this.inputmask&&this.inputmask._valueGet?this.inputmask._valueGet():this.value;for(var e=s.call(this,t);!e&&t.length>0;)t=t.substr(0,t.length-1),e=s.call(this,t);h.call(this,e,t),r.call(this)},d=function(t){var e=this;return setTimeout(function(){m.call(e)},0),t.stopImmediatePropagation(),!0},k=function(e){e=t.extend(!0,{onMaskChange:t.noop},e);var i={};for(var s in e.inputmask.definitions){var n=e.inputmask.definitions[s].validator;switch(typeof n){case"string":i[s]=new RegExp(n);break;case"object":"test"in e.definitions[s].validator&&(i[s]=n);break;case"function":i[s]={test:n}}}e.inputmask.definitions[e.replace]={validator:e.match.source,cardinality:1},this.inputmasks&&t(this).inputmasks("remove"),this.inputmasks={},this.inputmasks.options=e,this.inputmasks.defs=i,this.inputmasks.iphone=null!=navigator.userAgent.match(/iphone/i),this.inputmasks.oldmatch=!1,this.inputmasks.placeholder=e.inputmask.placeholder||Inputmask.prototype.defaults.placeholder,this.inputmasks.insertMode=e.inputmask.insertMode||Inputmask.prototype.defaults.insertMode,m.call(this)};t.fn.inputmasks=function(e){switch(e){case"remove":a.call(this),this.inputmasks=void 0,t(this).inputmask("remove");break;case"isCompleted":var i=s.call(this[0],this[0].inputmask&&this[0].inputmask._valueGet()||this[0].value);return i&&i.completed;default:return this.each(function(){k.call(this,e)}),this}}}(jQuery); | ||
!function(t){t.masksLoad=function(e){var s;return t.ajax({url:e,async:!1,dataType:"json",success:function(t){s=t}}),s},t.masksSort=function(e,s,i,n){return e.sort(function(e,a){for(var r=0,o=0;r<e[n].length&&o<a[n].length;){var h=e[n].charAt(r),c=a[n].charAt(o);if(i.test(h))if(i.test(c)){if(-1!=t.inArray(h,s)&&-1==t.inArray(c,s))return 1;if(-1==t.inArray(h,s)&&-1!=t.inArray(c,s))return-1;if(-1==t.inArray(h,s)&&-1==t.inArray(c,s)&&h!=c)return c>h?-1:1;r++,o++}else o++;else r++}for(;r<e[n].length||o<a[n].length;)if(r<e[n].length&&!i.test(e[n].charAt(r)))r++;else if(o<a[n].length&&!i.test(a[n].charAt(o)))o++;else{if(r<e[n].length)return 1;if(o<a[n].length)return-1}return 0}),e};var e=function(t,e){if("number"!=typeof t){if(this.setSelectionRange)t=this.selectionStart,e=this.selectionEnd;else if(document.selection&&document.selection.createRange){var s=document.selection.createRange();t=0-s.duplicate().moveStart("character",-1e5),e=t+s.text.length}return{begin:t,end:e}}if(e="number"==typeof e?e:t,this.setSelectionRange)this.setSelectionRange(t,e);else if(this.createTextRange){var s=this.createTextRange();s.collapse(!0),s.moveEnd("character",e),s.moveStart("character",t),s.select()}},s=Object.keys||function(t){if(t!==Object(t))throw new TypeError("Invalid object");var e=[];for(var s in t)e[e.length]=s;return e},i=function(t){for(var e=this.inputmasks.options,i="",n=0;n<t.length;n++){var a=t.charAt(n);if(a==this.inputmasks.placeholder)break;e.match.test(a)&&(i+=a)}for(var r in e.list){for(var o=e.list[r][e.listKey],h=!0,c=0,u=0;c<i.length&&u<o.length;){var l=o.charAt(u),p=i.charAt(c);if(e.match.test(l)||l in this.inputmasks.defs){if(!(l in this.inputmasks.defs&&this.inputmasks.defs[l].test(p)||p==l)){h=!1;break}c++,u++}else u++}if(h&&c==i.length){var m=-1==o.substr(u).search(e.match);o=o.replace(new RegExp([e.match.source].concat(s(this.inputmasks.defs)).join("|"),"g"),e.replace);var d=-1==o.substr(u).search(e.replace);return{mask:o,obj:e.list[r],determined:m,completed:d}}}return!1},n=function(t,e,s){var i=this.inputmasks.options;if(!t)return 0;for(var n=0,a=0;n<s.begin;n++)t.charAt(n)==i.replace&&a++;for(var r=0;n<s.end;n++)t.charAt(n)==i.replace&&r++;for(n=0;n<e.length&&(a>0||e.charAt(n)!=i.replace);n++)e.charAt(n)==i.replace&&a--;for(a=n;n<e.length&&r>0;n++)e.charAt(n)==i.replace&&r--;return r=n,{begin:a,end:r}},a=function(){t(this).off(".inputmasks")},r=function(){events=t._data(this,"events");var e=["keydown","keypress","paste","dragdrop","drop","setvalue","reset","cut","blur"],s=this;t.each(e,function(e,i){t.each(s.inputmask.events[i],function(e,n){t(s).off(i,n)})})},o=function(e){var s=this;t.each(this.inputmask.events[e.type],function(t,i){i.call(s,e)})},h=function(){t(this).on("keydown.inputmasks",l).on("keypress.inputmasks",p).on("paste.inputmasks",d).on("dragdrop.inputmasks",d).on("drop.inputmasks",d).on("cut.inputmasks",d).on("setvalue.inputmasks",m).on("blur.inputmasks",m).on("reset.inputmasks",m)},c=function(s,i){var a=this.inputmasks.options;if(s&&(void 0!==i||s.mask!=this.inputmasks.oldmatch.mask)){var o;void 0===i?o=n.call(this,this.inputmasks.oldmatch.mask,s.mask,e.call(this)):(this.inputmask&&this.inputmask.remove(),this.value=i),t(this).inputmask(s.mask,t.extend(!0,a.inputmask,{insertMode:this.inputmasks.insertMode})),r.call(this),void 0===i&&e.call(this,o.begin,o.end)}this.inputmasks.oldmatch=s,a.onMaskChange.call(this,s.obj,s.determined)},u=function(t,e,s){var n=i.call(this,e);return n&&n.obj==this.inputmasks.oldmatch.obj&&n.determined==this.inputmasks.oldmatch.determined?(o.call(this,t),!0):(n?s?(c.call(this,n),o.call(this,t)):(o.call(this,t),c.call(this,n)):s&&this.inputmasks.insertMode||f.call(this,e),!1)},l=function(t){if(t.metaKey)return o.call(this,t),!0;var s=this.inputmasks.options;t=t||window.event;var i=t.which||t.charCode||t.keyCode;if(8==i||46==i||this.inputmasks.iphone&&127==i){var n=this.inputmask._valueGet(),a=e.call(this);if(a.begin==a.end){var r=a.begin;do{46!=i&&r--;var h=n.charAt(r);n=n.substring(0,r)+n.substring(r+1)}while(r>0&&r<n.length&&h!=this.inputmasks.placeholder&&!s.match.test(h))}else n=n.substring(0,a.begin)+n.substring(a.end);return u.call(this,t,n,!1)}return 45==i&&(this.inputmasks.insertMode=!this.inputmasks.insertMode),o.call(this,t),!0},p=function(t){if(t.metaKey)return o.call(this,t),!0;var s=this.inputmask._valueGet();t=t||window.event;var i=t.which||t.charCode||t.keyCode,n=String.fromCharCode(i);return caretPos=e.call(this),s=caretPos.begin==caretPos.end&&s.charAt(caretPos.begin)==this.inputmasks.placeholder?s.substring(0,caretPos.begin)+n+s.substring(caretPos.end+1):s.substring(0,caretPos.begin)+n+s.substring(caretPos.end),u.call(this,t,s,!0)},m=function(t){return f.call(this),!0},d=function(t){var e=this;return setTimeout(function(){f.call(e)},0),!0},f=function(t){void 0===t&&(t=this.inputmask&&this.inputmask._valueGet?this.inputmask._valueGet():this.value);for(var e=i.call(this,t);!e&&t.length>0;)t=t.substr(0,t.length-1),e=i.call(this,t);c.call(this,e,t)},k=function(e){e=t.extend(!0,{onMaskChange:t.noop},e);var s={};for(var i in e.inputmask.definitions){var n=e.inputmask.definitions[i].validator;switch(typeof n){case"string":s[i]=new RegExp(n);break;case"object":"test"in e.definitions[i].validator&&(s[i]=n);break;case"function":s[i]={test:n}}}e.inputmask.definitions[e.replace]={validator:e.match.source,cardinality:1},this.inputmasks&&t(this).inputmasks("remove"),this.inputmasks={},this.inputmasks.options=e,this.inputmasks.defs=s,this.inputmasks.iphone=null!=navigator.userAgent.match(/iphone/i),this.inputmasks.oldmatch=!1,this.inputmasks.placeholder=e.inputmask.placeholder||Inputmask.prototype.defaults.placeholder,this.inputmasks.insertMode=void 0!==e.inputmask.insertMode?e.inputmask.insertMode:Inputmask.prototype.defaults.insertMode,f.call(this)};t.fn.inputmasks=function(e){switch(e){case"remove":a.call(this),this.inputmasks=void 0,t(this).inputmask("remove");break;case"isCompleted":var s=i.call(this[0],this[0].inputmask&&this[0].inputmask._valueGet()||this[0].value);return s&&s.completed;default:return this.each(function(){k.call(this,e),h.call(this)}),this}}}(jQuery); |
{ | ||
"name": "inputmask-multi", | ||
"version": "1.1.1", | ||
"version": "1.2.0", | ||
"title": "Inputmask Multi", | ||
@@ -25,4 +25,3 @@ "main": "js/jquery.inputmask-multi.js", | ||
"jquery": ">=1.5", | ||
"jquery.inputmask": ">=3.2.0", | ||
"bind-first": ">=0.1.0" | ||
"jquery.inputmask": ">=3.2.0" | ||
}, | ||
@@ -29,0 +28,0 @@ "description": "Inputmask Multi is a plugin which allows to select a mask of input basing on the beginning of entered data (such as an international phone number)", |
33193
2
405
- Removedbind-first@>=0.1.0
- Removedbind-first@1.0.1(transitive)