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);