+ -
当前位置:首页 → 问答吧 → 关于js联动计算的一些想法,希望讨论下。

关于js联动计算的一些想法,希望讨论下。

时间:2011-11-20

来源:互联网

最近在做一个js页面联动的控件,目标很简单,就是在一个input里输入数字(只能是数字),然后在和其他的页面元素进行计算,并把结果放置到第三个页面元素里,举个例子:

  col1 col2 col3 result
  1 2 [ ](a) 3
  10 20 [ ](b) 30

比如我在(a)里面输入3之后,result就变成6,(a)什么都不输入的话,默认的就是col1和col2的和。
对于(b)同理。
但是要求(a)和(b)可以输入形如:
123 (一百二十三)
.123 (零点一二三)
1.23 (一点二三)
123. (一百二十三)
-123 (负 一百二十三)
-.123(负 零点一二三)
-1.23(负 一点二三)
-123.(负 一百二十三)
形式的数字(我试过,这些数字的isNaN都是false)。

我是想在 (a)(b) 里边输入边计算,比如我想在(a)里输入10,按键顺序是先按数字1,再按数字0,这两步在resule中显示的结果应该是4,然后是13。

我是用keydown和keyup事件做的,在用户按下(keydown)一个数字键的时候我就把(a)里之前的数字记录到一个临时变量里,当keyup的时候,检查输入框里的是不是数字,如果是数字,则和最后一列result计算,否则用之前临时变量里的值替换input的value。

但是这样遇到一个问题,用户可以按着一个数字键不放手,或者是按着backspace键不放手,这就导致我的result计算结果出问题。

找了好久都没有想到好办法,希望来这里和大家讨论下,看看有没有更好的实现方法。

作者: fortin1001   发布时间: 2011-11-20

把onkeydown写在onkeypress中,并且

JScript code
if(8==keycode){
  event.preventDefault();
}

作者: p2227   发布时间: 2011-11-20

噢想起这样就按不了backspace了,还是有问题

作者: p2227   发布时间: 2011-11-20

相关阅读 更多