关于整数部分为0的小数在web上的显示问题

环境:asp,vbs

今天测试时发现web页面上出现了一个数字显示方面的bug,比如数据库中的数据为0.722,页面上却显示为.722,显然跟数据的格式有问题,本人之前对asp并不熟悉,google了一个发现大部分解决方案均跟Formatnumber函数有关,但仔细推敲,离实际需求还有差距,因为使用该函数就意味着小数位数固定,而实际需求跟是数据库的格式保持一致,即有几位小数,就显示几位小数。

于是重新考虑解决办法,在google之后对原有代码稍加改造,具体代码如下,满足要求

Function AddZero(re)
  If IsNumeric(re) then
     if abs(re)<>0 then
       if abs(re)<1 then
         if re>0 then
             AddZero="0"&abs(re)
         else
             AddZero="-0"&abs(re)
         end if
       end if
     else
        AddZero=re       
     end if
  else
      AddZero="当前变量不是数值类型!"
  end If
end Function

(注:参数re若通过recordset获得,须将该值转换为string型,调用可参考AddZero(Cstr(RecordSet("字段名")))  ;

参考:http://blog.csdn.net/puloon/archive/2007/08/10/1736111.aspx

)

这个需求可以通过监听输入框的输入事件来实现,具体步骤如下: 1. 给输入框绑定一个输入事件,每次输入时触发该事件。 2. 在事件处理函数中,获取输入框中的文本内容,判断是否为合法的数字格式。 3. 如果是合法的数字格式,将整数部分添加千分位符。 4. 如果有小数部分,保留两位小数。 5. 将处理后的文本内容重新赋值给输入框。 6. 获取当前光标位置,并根据处理后的文本内容计算出新的光标位置。 7. 将光标位置设置为新的位置。 下面是一个简单的实现示例: ```html <input type="text" id="input"> <script> const input = document.getElementById('input'); let oldValue = ''; input.addEventListener('input', function(e) { const value = e.target.value; // 判断是否为合法的数字格式 if (/^\d*(\.\d{0,2})?$/.test(value)) { // 添加千分位符 const parts = value.split('.'); parts[0] = parts[0].replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,'); // 保留两位小数 if (parts.length > 1) { parts[1] = parts[1].substring(0, 2); } const newValue = parts.join('.'); // 将处理后的文本内容重新赋值给输入框 e.target.value = newValue; // 计算新的光标位置 let newCursorPos; if (value.length > oldValue.length) { // 在末尾输入 newCursorPos = e.target.selectionEnd; } else if (value.length < oldValue.length) { // 在中间删除 newCursorPos = e.target.selectionEnd - (oldValue.length - value.length); } else { // 在中间输入 const cursorPos = e.target.selectionEnd; const diff = newValue.length - value.length; newCursorPos = cursorPos + diff; } // 将光标位置设置为新的位置 e.target.setSelectionRange(newCursorPos, newCursorPos); oldValue = newValue; } else { // 不是合法的数字格式,恢复原来的文本内容 e.target.value = oldValue; } }); </script> ``` 在这个示例中,我们将输入框的输入事件处理函数绑定到了`input`事件上,每次输入时都会触发该事件处理函数。在处理函数中,我们首先获取输入框中的文本内容,然后判断是否为合法的数字格式。如果是合法的数字格式,我们就将整数部分添加千分位符,保留两位小数,并重新赋值给输入框。接着,我们根据输入前后的文本长度差来计算新的光标位置,并将光标位置设置为新的位置。最后,我们将处理后的文本内容保存下来,以便下一次输入时进行比较。如果输入的文本不是合法的数字格式,我们就将输入框的文本内容恢复为上一次的文本内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值