在每个输入字段上运行JavaScript函数

时间:2012-11-07 09:43:17

标签: javascript jquery html

我有一个包含多个输入字段的巨大表单。这是一个平衡和利润&损失表,因此输入文本字段必须格式化为“钱”。我发现了一些很好的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
        });
    });

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

你可以做

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

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

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

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

答案 1 :(得分:0)

$('body').on('keyup', 'input', function(){
       $("body").find("input").each(function(index, element){
            $(element).val(accounting.formatMoney($(element).val(), options));
       });
});