16 lines
5.5 KiB
JavaScript
16 lines
5.5 KiB
JavaScript
/**
|
|
* Copyright 2014 Telerik AD
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
!function(e,define){define(["./kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.caret,o=n.keys,r=n.ui,a=r.Widget,s=".kendoMaskedTextBox",l=e.proxy,d=(n.support.propertyChangeEvent?"propertychange":"input")+s,c="k-state-disabled",u="disabled",p="readonly",f="change",h=a.extend({init:function(t,o){var r,l,d=this;a.fn.init.call(d,t,o),d._rules=e.extend({},d.rules,d.options.rules),t=d.element,r=t[0],d.wrapper=t,d._tokenize(),d._reset(),d.element.addClass("k-textbox").attr("autocomplete","off").on("focus"+s,function(){var e=r.value;d._oldValue=e,e||(r.value=d._old=d._emptyMask),d._timeoutId=setTimeout(function(){i(t,0,e?d._maskLength:0)})}).on("focusout"+s,function(){var e=t.val();clearTimeout(d._timeoutId),r.value=d._old="",e!==d._emptyMask&&(r.value=d._old=e),d._change()}),l=t.is("[disabled]"),l?d.enable(!1):d.readonly(t.is("[readonly]")),d.value(d.options.value||t.val()),n.notify(d)},options:{name:"MaskedTextBox",promptChar:"_",culture:"",rules:{},value:"",mask:""},events:[f],rules:{0:/\d/,9:/\d|\s/,"#":/\d|\s|\+|\-/,L:/[a-zA-Z]/,"?":/[a-zA-Z]|\s/,"&":/\S/,C:/./,A:/[a-zA-Z0-9]/,a:/[a-zA-Z0-9]|\s/},setOptions:function(t){var n=this;a.fn.setOptions.call(n,t),n._rules=e.extend({},n.rules,n.options.rules),n._tokenize(),this._unbindInput(),this._bindInput(),n.value(n.element.val())},destroy:function(){var e=this;e.element.off(s),e._form&&e._form.off("reset",e._resetHandler),a.fn.destroy.call(e)},value:function(e){var i=this.element,o=this._emptyMask;return e===t?this.element.val():o?(e=this._unmask(e+""),i.val(e?o:""),this._mask(0,this._maskLength,e),n._activeElement()!==i&&i.val()===o&&i.val(""),t):(i.val(e),t)},readonly:function(e){this._editable({readonly:e===t?!0:e,disable:!1})},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t?!0:e)})},_bindInput:function(){var e=this;e._maskLength&&e.element.on("keydown"+s,l(e._keydown,e)).on("keypress"+s,l(e._keypress,e)).on("paste"+s,l(e._paste,e)).on(d,l(e._propertyChange,e))},_unbindInput:function(){this.element.off("keydown"+s).off("keypress"+s).off("paste"+s).off(d)},_editable:function(e){var t=this,n=t.element,i=e.disable,o=e.readonly;t._unbindInput(),o||i?n.attr(u,i).attr(p,o).toggleClass(c,i):(n.removeAttr(u).removeAttr(p).removeClass(c),t._bindInput())},_change:function(){var e=this,t=e.value();t!==e._oldValue&&(e._oldValue=t,e.trigger(f),e.element.trigger(f))},_propertyChange:function(){var e,t,n=this,o=n.element[0],r=o.value;r===n._old||n._pasting||(t=i(o)[0],e=n._unmask(r.substring(t),t),o.value=n._old=r.substring(0,t)+n._emptyMask.substring(t),n._mask(t,t,e),i(o,t))},_paste:function(e){var t=this,n=e.target,o=i(n),r=o[0],a=o[1],s=t._unmask(n.value.substring(a),a);t._pasting=!0,setTimeout(function(){var e=n.value,o=e.substring(r,i(n)[0]);n.value=t._old=e.substring(0,r)+t._emptyMask.substring(r),t._mask(r,r,o),r=i(n)[0],t._mask(r,r,s),i(n,r),t._pasting=!1})},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){setTimeout(function(){t.value(n[0].value)})},t._form=o.on("reset",t._resetHandler))},_keydown:function(e){var n,r=e.keyCode,a=this.element[0],s=i(a),l=s[0],d=s[1],c=r===o.BACKSPACE;c||r===o.DELETE?(l===d&&(c?l-=1:d+=1,n=this._find(l,c)),n!==t&&n!==l?(c&&(n+=1),i(a,n)):l>-1&&this._mask(l,d,"",c),e.preventDefault()):r===o.ENTER&&(this._change(),e.preventDefault())},_keypress:function(e){if(0!==e.which&&!e.ctrlKey){var t=i(this.element);this._mask(t[0],t[1],String.fromCharCode(e.which)),e.preventDefault()}},_find:function(e,t){var n=this.element.val()||this._emptyMask,i=1;for(t===!0&&(i=-1);e>-1||this._maskLength>=e;){if(n.charAt(e)!==this.tokens[e])return e;e+=i}return-1},_mask:function(e,o,r,a){var s,l,d,c,u=this.element[0],p=u.value||this._emptyMask,f=this.options.promptChar,h=0;for(e=this._find(e,a),e>o&&(o=e),l=this._unmask(p.substring(o),o),r=this._unmask(r,e),s=r.length,r&&(l=l.replace(RegExp("^_{0,"+s+"}"),"")),r+=l,p=p.split(""),d=r.charAt(h);this._maskLength>e;)p[e]=d||f,d=r.charAt(++h),c===t&&h>s&&(c=e),e=this._find(e+1);u.value=this._old=p.join(""),n._activeElement()===u&&(c===t&&(c=this._maskLength),i(u,c))},_unmask:function(t,n){var i,o,r,a,s,l,d,c;if(!t)return"";for(t=(t+"").split(""),r=0,a=n||0,s=this.options.promptChar,l=t.length,d=this.tokens.length,c="";d>a&&(i=t[r],o=this.tokens[a],i===o||i===s?(c+=i===s?s:"",r+=1,a+=1):"string"!=typeof o?((o.test&&o.test(i)||e.isFunction(o)&&o(i))&&(c+=i,a+=1),r+=1):a+=1,!(r>=l)););return c},_tokenize:function(){for(var e,t,i,o,r=[],a=0,s=this.options.mask||"",l=s.split(""),d=l.length,c=0,u="",p=this.options.promptChar,f=n.getCulture(this.options.culture).numberFormat,h=this._rules;d>c;c++)if(e=l[c],t=h[e])r[a]=t,u+=p,a+=1;else for("."===e||","===e?e=f[e]:"$"===e?e=f.currency.symbol:"\\"===e&&(c+=1,e=l[c]),e=e.split(""),i=0,o=e.length;o>i;i++)r[a]=e[i],u+=e[i],a+=1;this.tokens=r,this._emptyMask=u,this._maskLength=u.length}});r.plugin(h)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t){t()}); |