1

背景:

我有一个网页,其中包含许多 textarea 输入字段,每次加载页面时都会从数据库中加载数值(通过网络服务器在每次加载页面时查找的注释标签,然后在其位置插入值)。例如:

<input type="text" value="<!--#etc etc etc -->"/>

我遇到的问题是从数据库中提取的数据被格式化为我不需要显示的额外小数空格,并且我无法重新格式化数据库中的数据。

经过一番搜索,我确实找到了一个非常有用的 jquery 教程(在此处找到:how-to-limit-two-decimal-digits-in-a-jquery-input-field.html),它完全符合我的需要,但在onkeyup 事件。由于我的值是插入页面而不是由用户插入的,因此我需要该功能在页面完成加载后立即自动运行。这可能吗?

下面是我最近尝试使用教程中的 html/script 作为基础,但到目前为止,在将 keyup 事件修改为(我相信是)onload 事件后我还没有运气:

<input type="text" name="one" class="two-digits" value="123.45126"><br>
<input type="text" name="two" class="two-digits" value="654.31221">

// apply the two-digits behaviour to elements with 'two-digits' as their class
$(window).load(function() {
$('.two-digits').ready(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
});
});

任何投入将不胜感激!

编辑:我忘了提到网络服务器是一个嵌入式 qnx slinger 服务器。所以我没有(也不能添加)对 php 的服务器端支持,或任何其他常见的服务器端脚本语言。

4

2 回答 2

1

您需要使用.each()。这将在该类的每个项目上调用该函数

$('.two-digits').each(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
});

http://jsfiddle.net/qFQCE/

于 2013-10-15T17:58:39.593 回答
0

如果您从数据库中提取信息,并且您使用的是 PHP,则可以使用此函数:

number_format($DB_VAL, 2);

这会将您的数字四舍五入为点后的2个数字。

编辑:

使用.eachjquery 函数循环遍历文本框并使用显示的函数更改它们的值。

于 2013-10-15T17:55:29.080 回答