В jQuery, какой лучший способ форматирования числа до двух знаков после запятой?
Вот что я имею прямо сейчас:
$("#number").val(parseFloat($("#number").val()).toFixed(2));
Это выглядит грязно для меня. Я не думаю, что правильно свяжу функции. Должен ли я называть его для каждого текстового поля, или я могу создать отдельную функцию?
Ответы
Ответ 1
Если вы делаете это с несколькими полями или делаете это довольно часто, возможно, плагин является ответом.
Здесь начинается плагин jQuery, который форматирует значение поля до двух знаков после запятой.
Это вызвано событием onchange в поле. Вы можете хотеть что-то другое.
<script type="text/javascript">
// mini jQuery plugin that formats to two decimal places
(function($) {
$.fn.currencyFormat = function() {
this.each( function( i ) {
$(this).change( function( e ){
if( isNaN( parseFloat( this.value ) ) ) return;
this.value = parseFloat(this.value).toFixed(2);
});
});
return this; //for chaining
}
})( jQuery );
// apply the currencyFormat behaviour to elements with 'currency' as their class
$( function() {
$('.currency').currencyFormat();
});
</script>
<input type="text" name="one" class="currency"><br>
<input type="text" name="two" class="currency">
Ответ 2
Может быть, что-то вроде этого, где вы могли бы выбрать более одного элемента, если хотите?
$("#number").each(function(){
$(this).val(parseFloat($(this).val()).toFixed(2));
});
Ответ 3
Мы модифицируем функцию Meouw, которая будет использоваться с клавиатурой, потому что, когда вы используете ввод, это может быть более полезно.
Проверьте это:
Привет, @heridev, и я создал небольшую функцию в jQuery.
Вы можете попробовать следующее:
HTML
<input type="text" name="one" class="two-digits"><br>
<input type="text" name="two" class="two-digits">
JQuery
// apply the two-digits behaviour to elements with 'two-digits' as their class
$( function() {
$('.two-digits').keyup(function(){
if($(this).val().indexOf('.')!=-1){
if($(this).val().split(".")[1].length > 2){
if( isNaN( parseFloat( this.value ) ) ) return;
this.value = parseFloat(this.value).toFixed(2);
}
}
return this; //for chaining
});
});
DEMO ONLINE:
http://jsfiddle.net/c4Wqn/
(@heridev, @vicmaster)