jQuery Mask Plugin - Issue Report

You don't need to start from scratch..

by Leonam, Carlos

HTML

<script src="http://igorescobar.github.io/jQuery-Mask-Plugin/js/jquery.mask.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
<div class="container">
    <h3>Decimal Point always present?</h3>
    <h3>Remove value if is "0,00"</h3>
    <hr />
    
    <form role="form">
        
        <div class="form-group">
            <label for="date-field">Money</label>
            <input type="text" class="form-control" id="money-field">
        </div>
    
        
    </div>
    </form>
</div>

CSS

#money-field {
  text-align:right;
}

JavaScript

// Font base: http://jsfiddle.net/c6qj0e3u/11/
    // Edited by: Pyetro
    // New feature: Check if field value is "0,00" and Backspace was pressed, so clean Val
    // Accept decimals "." or ","
    var MoneyOpts = {
      reverse:true,
      maxlength: false,
      placeholder: '0,00',
      onKeyPress: function(v, ev, curField, opts) {
        var mask = curField.data('mask').mask;
            decimalSep = (/0(.)00/gi).exec(mask)[1] || ',';
        if (curField.data('mask-isZero') && curField.data('mask-keycode') == 8)
          $(curField).val('');
        else if (v) {
          // remove previously added stuff at start of string
          v = v.replace(new RegExp('^0*\\'+decimalSep+'?0*'), ''); //v = v.replace(/^0*,?0*/, '');
          v = v.length == 0 ? '0'+decimalSep+'00' : (v.length == 1 ? '0'+decimalSep+'0'+v : (v.length == 2 ? '0'+decimalSep+v : v));
          $(curField).val(v).data('mask-isZero', (v=='0'+decimalSep+'00'));
        }
      }
    };

$('#money-field').mask("#.##0,00", MoneyOpts);