Files
2025-05-12 15:45:17 +00:00

100 lines
2.3 KiB
JavaScript
Executable File

$(document).ready(
function() {
window.onbeforeunload = confirmExit;
// prevent submit by enter press
lockEnter();
$("#value").change(function(e){
$(this).val(FormatNumber($(this).val()));
});
}
);
var check_form_ = check_form;
check_form = function(formname) {
window.onbeforeunload = null;
if (check_form_(formname) == false) {
window.onbeforeunload = confirmExit;
return false;
} else {
//$('#value').val(UnformatNumber($('#value').val()));
return true;
}
return false;
};
function confirmExit() {
return "";
}
function lockEnter() {
// prevent default
$(window).keydown(function(event) {
if (event.keyCode == 13 && $(":focus").prop('tagName')!='input') {
event.preventDefault();
return false;
}
});
}
function FormatNumber(number, precision) {
var precision = precision == 0 || precision ? precision : 2;
// make string..
number = number + '';
var minus = false;
if (number.charAt(0) == '-') {
minus = true;
number = number.slice(1);
}
number = number.replace(',', '.');
// round
number = toFixed(number, precision);
// add 1000 sep
var tmp = number.split(".");
var c = '';
for (var i = tmp[0].length; i != -1; i--) {
c += tmp[0].charAt(i);
if ((tmp[0].length - i) == 0 || i == 0)
continue;
if ((tmp[0].length - i) % 3 == 0)
c += '.';
}
// reverse c
c = c.split("").reverse().join("");
if (minus)
c = '-' + c;
return precision == 0 ? c : c + ',' + tmp[1];
}
function UnformatNumber(number) {
if (!number)
number = 0;
// make string..
number = number + '';
// remove 1000 sep
number = number.replace('.', '');
// change ',' to '.'
number = number.replace(',', '.');
return parseFloat(number);
}
// round with precision
function toFixed(value, precision) {
var precision = precision || 0,
neg = value < 0, power = Math.pow(10, precision),
value = Math.round(value * power),
integral = String((neg ? Math.ceil : Math.floor)(value / power)),
fraction = String((neg ? -value : value) % power),
padding = new Array(Math.max(precision - fraction.length, 0) + 1).join('0');
//fix problem with Math.floor and Math.ceil with result zero (lose sign)
if (neg && integral=="0")
integral='-'+integral;
return precision ? integral + '.' + padding + fraction : integral;
}