最近在做一个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计算结果出问题。找了好久都没有想到好办法,希望来这里和大家讨论下,看看有没有更好的实现方法。
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计算结果出问题。找了好久都没有想到好办法,希望来这里和大家讨论下,看看有没有更好的实现方法。
event.preventDefault();
}
<head>
<title></title>
<script type="text/javascript">
var lastkeyCode = -1;
function TestKeyDown(event) {
if (event.keyCode == lastkeyCode) {
alert("重复按下了某个按键!");
//处理
}
lastkeyCode = event.keyCode;
}
</script>
</head>
<body>
<input type="text" value="Test" onkeydown="TestKeyDown(event);" />
</body>
</html>