所以我正在处理一个表单并且有一个字段,我应该在小数分隔符后面允许5位小数。但是我还必须在.focus()和。 blur()事件,它的工作原理。但是,当我单击“else”时,我的输入字段中的值将按照我的要求格式化,从我的5位小数中删除最后2位。例如:我输入78676,56569,重新返回78.676,565如何更改代码以使其不删除我的最后2位小数?这就是我所拥有的:
function fiveDecimals(event) {
var $txtBox = $(this);
var key = window.event ? event.keyCode : event.which;
if (event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39) {
return true;
} else if ( key < 44 || key > 57 && event.keyCode != 44) {
event.preventDefault();
}else {
var len = $txtBox.val().length;
var index = $txtBox.val().indexOf(',');
if (index > 0 && event.keyCode == 44) {
return false;
} //prevent if already comma
if (index > 0) {
var charAfterdot = (len + 1) - index;
//allows only 5 decimals
if (charAfterdot > 6) {
return false;
}
}
}
return $txtBox;
};
var
dec_separator = (0.1).toLocaleString().substr(1,1), // Get decimal separator
dec_xsanitize = new RegExp('[' + dec_separator + ']', 'g'), // Get thousands separator
tho_separator = (1000).toLocaleString().substr(1,1),
tho_xcleaner = new RegExp('[' + tho_separator + ']', 'g');
$('#float2')
.on("focus", function ()
{
this.value = this.value.replace( tho_xcleaner, '' );
})
.on("blur", function ()
{// Clean thousands separator and change decimal separator
var number = parseFloat(this.value.replace( tho_xcleaner, '' ).replace( dec_xsanitize, '.' ));
this.value = isNaN(number) ? '0': number.toLocaleString();
});
这是Jsfiddle:http://jsfiddle.net/Daria90/zuxu5tva/
请注意,我的小数分隔符是在DE系统上设置的,因此在英文键盘上它可能是一个句点,keyCode是46.我的是44。
答案 0 :(得分:0)
您需要在$(this).val(number);
函数
blur
$('#float2')
.on("focus", function ()
{
this.value = this.value.replace( tho_xcleaner, '' );
})
.on("blur", function ()
{// Clean thousands separator and change decimal separator
var number = parseFloat(this.value.replace( tho_xcleaner, '' ).replace( dec_xsanitize, '.' ));
this.value = isNaN(number) ? '0': number.toLocaleString();
$(this).val(number);
});