Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * @Copyright (c) 2009 Aurélio Saraiva ([email protected])
- * @Page http://github.com/plentz/jquery-maskmoney
- * try at http://inovaideia.com.br/maskInputMoney/
- * Special thanks to Raul Pereira da Silva ([email protected]) and Diego Plentz (http://plentz.org)
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
- /*
- * @Version: 0.3
- * @Release: 2009-10-29
- */
- (function($) {
- $.fn.maskMoney = function(settings) {
- settings = $.extend({
- symbol:'US$',
- decimal:'.',
- precision:2,
- thousands:',',
- allowZero:false,
- showSymbol:false
- }, settings);
- settings.symbol=settings.symbol+' ';
- return this.each(function() {
- var input = $(this);
- function keypressEvent(e) {
- e = e||window.event;
- var k = e.charCode||e.keyCode||e.which;
- if (k==8) { // tecla backspace
- preventDefault(e);
- var x = input.val().substring(0,input.val().length-1);
- input.val(maskValue(x));
- return false;
- } else if (k==9) { // tecla tab
- return true;
- }
- if (k<48||k>57) {
- preventDefault(e);
- return true;
- } else if (input.val().length==input.attr('maxlength')) {
- return false;
- }
- var key = String.fromCharCode(k); // Valor para o código da Chave
- preventDefault(e);
- input.val(maskValue(input.val()+key));
- }
- function focusEvent(e) {
- if (input.val()=='') {
- input.val(setSymbol(getDefaultMask()));
- } else {
- input.val(setSymbol(input.val()));
- }
- if (this.createTextRange) {
- var textRange = this.createTextRange();
- textRange.collapse(false); // posiciona cursor no final.
- textRange.select();
- }
- }
- function blurEvent(e) {
- if ($.browser.msie) {
- keypressEvent(e);
- }
- if (input.val()==setSymbol(getDefaultMask())) {
- if(!settings.allowZero) input.val('');
- } else {
- input.val(input.val().replace(settings.symbol,''));
- }
- }
- function preventDefault(e) {
- if (e.preventDefault) { //standart browsers
- e.preventDefault();
- } else { // internet explorer
- e.returnValue = false
- }
- }
- function maskValue(v) {
- v = v.replace(settings.symbol,'');
- var strCheck = '0123456789';
- var len = v.length;
- var a = '', t = '';
- if (len==0) {
- t = '0.00';
- }
- for (var i = 0; i<len; i++) {
- if ((v.charAt(i)!='0') && (v.charAt(i)!=settings.decimal)) break;
- }
- for (; i<len; i++) {
- if (strCheck.indexOf(v.charAt(i))!=-1) a+= v.charAt(i);
- }
- var n = parseFloat(a);
- n = isNaN(n) ? 0 : n/Math.pow(10,settings.precision);
- t = n.toFixed(settings.precision);
- i = settings.precision == 0 ? 0 : 1;
- var p, d = (t=t.split('.'))[i].substr(0,settings.precision);
- for (p = (t=t[0]).length; (p-=3)>=1;) {
- t = t.substr(0,p)+settings.thousands+t.substr(p);
- }
- return (settings.precision>0)
- ? setSymbol(t+settings.decimal+d+Array((settings.precision+1)-d.length).join(0))
- : setSymbol(t);
- }
- function getDefaultMask() {
- var n = parseFloat('0')/Math.pow(10,settings.precision);
- return (n.toFixed(settings.precision)).replace(new RegExp('\\.','g'),settings.decimal);
- }
- function setSymbol(v) {
- if (settings.showSymbol) {
- return settings.symbol+v;
- }
- return v;
- }
- input.bind('keypress',keypressEvent);
- input.bind('blur',blurEvent);
- input.bind('focus',focusEvent);
- input.one('unmaskMoney',function() {
- input.unbind('focus',focusEvent);
- input.unbind('blur',blurEvent);
- input.unbind('keypress',keypressEvent);
- if ($.browser.msie) {
- this.onpaste= null;
- } else if ($.browser.mozilla) {
- this.removeEventListener('input',blurEvent,false);
- }
- });
- });
- }
- $.fn.unmaskMoney=function() {
- return this.trigger('unmaskMoney');
- };
- })(jQuery);
Add Comment
Please, Sign In to add comment