1

我有一个带有多个输入字段的巨大表单。这是一个余额和损益表,因此输入文本字段必须格式化为“货币”。我找到了一些不错的 jQuery 插件来进行格式化:accounting JS,但现在我必须在所有字段上手动调用它,这不是我认为的最佳方法......

如何在 keydown 的所有输入文本字段上调用 ​​accounting.formatMoney() 函数?因此,如果 FORM 或 BODY 上有 KeyDown 或 KeyUp 事件,脚本将找到所有输入字段并执行脚本。

这是我想在每个 INPUT 文本字段上调用的格式和 Javascript 函数:

var options = {
    symbol : "",
    thousand: " ",
    precision : 0,
    format: "%v%s"
};

var tmp = parseInt(document.getElementById('input_id').value, 10);
document.getElementById('input_id').value = accounting.formatMoney(tmp, options);

表单通过 AJAX 发送回 BODY,所以我认为最好的方法是这样调用函数:

    $(document).ready(function(){
        $('body').on('keyup', 'input', function(e){
                    // collect all input fields and execute the function
        });
    });

非常感谢你的帮助!

4

2 回答 2

2

你可能会做

$(document).ready(function(){
    $('body').on('keyup', 'input', function(){
            $(this).val(accounting.formatMoney($(this).val(), options));
    });
});

但这假设您的用户希望在输入时修改输入。

如果您想在用户离开字段或键入“输入”时修改输入,请执行以下操作:

$(document).ready(function(){
    $('body').on('blur change', 'input', function(){
            $(this).val(accounting.formatMoney($(this).val(), options));
    });
});

请注意,在现实世界的应用程序中,我将在我的输入上有一个类,以使选择器更具选择性('input.money'而不是'input')。

编辑 :

如果要将其应用于表中的输入idbstable请执行

$(document).ready(function(){
    $('#bstable').on('blur change', 'input', function(){
            $(this).val(accounting.formatMoney($(this).val(), options));
    });
});

如果bstable表格是通过 ajax 获得的并且不是立即出现在此处,您可以这样做

$(document).ready(function(){
    $(document.body).on('blur change', '#bstable input', function(){
            $(this).val(accounting.formatMoney($(this).val(), options));
    });
});
于 2012-11-07T09:45:04.520 回答
0
$('body').on('keyup', 'input', function(){
       $("body").find("input").each(function(index, element){
            $(element).val(accounting.formatMoney($(element).val(), options));
       });
});
于 2012-11-07T09:49:01.140 回答