2012-11-07 71 views
1

我有一个包含多个输入字段的巨大表单。这是一个平衡和利润损失表,所以输入文本字段必须格式化为“金钱”。我发现一些不错的jQuery插件来做格式化:accounting JS,但现在我必须在所有字段手动调用它,这不是我认为的最好的方法...在每个输入字段上运行JavaScript函数

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

这是我想对每一个输入文本字段调用格式以及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发送回身体,所以我认为最好的方法是调用功能如下:

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

非常感谢您的帮助!

回答

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

如果通过AJAX获得bstable表并没有立即在这里,你可以做

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

$('body')。on('blur change')是否会在模糊时触发两次触发?就是想。 –

+0

我回答了我自己的评论,是的,如果文字改变,它会触发两次。 –

+0

@不立即烘烤:如果您输入回车,则会触发一次。如果您单击输入或转到另一个字段并且该字段已更改,则会触发两次。如果您转到其他字段或点击并且该字段没有更改,则会触发一次。 [小提琴](http://jsfiddle.net/SMxWU/) –

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