Javascript 如何防止在Jquery中删除小数?

Javascript 如何防止在Jquery中删除小数?,javascript,jquery,substring,decimalformat,focusout,Javascript,Jquery,Substring,Decimalformat,Focusout,因此,我正在处理一个表单和一个字段,在这个字段中,小数分隔符后面应该有5个小数。不过,我还必须在.focus()和上完成这项工作。blur()事件,它可以工作。但是,当我单击elsewere以在输入字段中按我所需的格式设置值时,从我的5位小数中删除最后2位小数。例如:我输入78676569,re返回78.676565如何更改代码使其不删除最后2位小数?以下是我所拥有的: function fiveDecimals(event) { var $txtBox =

因此,我正在处理一个表单和一个字段,在这个字段中,小数分隔符后面应该有5个小数。不过,我还必须在.focus()和上完成这项工作。blur()事件,它可以工作。但是,当我单击elsewere以在输入字段中按我所需的格式设置值时,从我的5位小数中删除最后2位小数。例如:我输入78676569,re返回78.676565如何更改代码使其不删除最后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();
                }); 
函数五个细节(事件){
var$txtBox=$(此);
var key=window.event?event.keyCode:event.which;
如果(event.keyCode==8 | | event.keyCode==9 | | event.keyCode==37 | | event.keyCode==39){
返回true;
}否则如果(键<44 | |键>57&&event.keyCode!=44){
event.preventDefault();
}否则{
var len=$txtBox.val().length;
var index=$txtBox.val().indexOf(',');
如果(索引>0&&event.keyCode==44){
返回false;
}//如果已使用逗号,则阻止
如果(索引>0){
var charAfterdot=(len+1)-指数;
//只允许5位小数
如果(字符点>6){
返回false;
}
}
}
返回$txtBox;
};      
变量
dec_separator=(0.1).toLocaleString().substr(1,1),//获取十进制分隔符
dec_xsanize=new RegExp(“['+dec_separator+']”,'g'),//获取数千个分隔符
tho_分隔符=(1000).toLocaleString().substr(1,1),
tho_xcleaner=new RegExp('['+tho_separator+']','g');
$(“#浮动2”)
.关于(“焦点”,函数()
{
this.value=this.value.replace(tho_xcleaner“”);
})
.on(“模糊”,函数()
{//清除千位分隔符并更改小数分隔符
var number=parseFloat(this.value.replace(tho_xcleaner.)).replace(dec_xsanitize.);
this.value=isNaN(数字)?“0”:数字.toLocaleString();
}); 
以下是JSFIDLE:


请注意,我的小数分隔符是在DE系统上设置的,所以在英文键盘上可能是一个句点,键盘代码是46。我的是44美元。

你只需要包含
$(这个).val(数字)模糊功能中的code>

        $('#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);
                });             

查看

您只需要包含
$(this).val(number)模糊功能中的code>

        $('#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);
                });             

看看《身份不明》吧,我加上了那句话,遗憾的是它没有起到作用。但它在小提琴中起作用。你检查过小提琴了吗?我检查过了,小数确实保留了下来,但是格式设置消失了,小数分隔符变成了句点。我想要一个逗号作为十进制分隔符,我想要我的值在上用tousands saparators(在我的例子中是句点)进行格式化。focusOut()Identity Unkn0wn,我添加了那一行,遗憾的是它没有起到作用。但它在小提琴中起作用。你检查过小提琴了吗?我检查过了,小数确实保留了下来,但是格式设置消失了,小数分隔符变成了句点。我想要一个逗号作为十进制分隔符,我想要我的值在上用tousands saparators(在我的例子中是句点)进行格式化。focusOut()Identity Unkn0wn,我添加了那一行,遗憾的是它没有起到作用。但它在小提琴中起作用。你检查过小提琴了吗?我检查过了,小数确实保留了下来,但是格式设置消失了,小数分隔符变成了句点。我想要一个逗号作为十进制分隔符,我想要我的值在.focusOut()上用tousands saparators(在我的例子中是句点)格式化