如何对委托使用jQuery数字格式

如何对委托使用jQuery数字格式,jquery,Jquery,我使用这个插件动态地格式化“,”十进制和“.”格式的数字。这在正常情况下效果很好。我遇到的问题是动态添加的HTML,其中您使用一个委托来启动jQuery 正常的 $('input.number').number( true, 2 ); 如果我使用运行时存在的另一个ID,例如#body,那么调用它的正确方式是什么?我试过了 差不多 $("#body").on("keyup", "input#number", function(event) { $(this).number(true,2,

我使用这个插件动态地格式化“,”十进制和“.”格式的数字。这在正常情况下效果很好。我遇到的问题是动态添加的HTML,其中您使用一个委托来启动jQuery

正常的

$('input.number').number( true, 2 );
如果我使用运行时存在的另一个ID,例如#body,那么调用它的正确方式是什么?我试过了 差不多

$("#body").on("keyup", "input#number", function(event) {
    $(this).number(true,2,',','.');
 });
但是小数点右边的数字有问题。例如,如果我尝试键入“450,45”,最后的数百位数字永远不会被使用,我键入的其他数字将被放置在10位


有没有合适的方法可以做到这一点?

据我所知,输入应该总是类似于
123.456
第四个参数不是输入的另一个可能的十进制分隔符,而是输出的千位分隔符

$("#body").on("change", "input#number", function(event) {
    // replace , by .
    var value = $(this).val().replace(",",".");
    // update input value 
    $(this).val($.number(value,2,',','.'));
});
最好的方法是强制用户提供有效的输入和验证。这样,您就不必找到这样的解决方法来格式化您的数字。
这里有更多信息:

我按照你的建议做了,但遇到了同样的问题。我在value语句之后添加了一个console.log(value),我注意到如果我键入“85”,两个日志分别是“8”和“8.005”。好的,您需要使用更改事件而不是keyup,因为当您键入8时,输入的值将替换为8.00,然后键入5,这里是8.005。另一种解决方案可能是,但这需要一些计算(例如,键入4位数字时)。