为什么event.target.value不包含“。”和“ e”代表数字输入?

时间:2018-08-24 11:48:52

标签: javascript html reactjs preact

我正在使用Preact:

<input type="number" onKeyup={event => console.log(event.target.value)} />

如果输入句点或“ e”,则直到我在其后输入另一个数字后,它才出现在event.target.value中。

例如

如果输入值为123,则会记录123

如果输入值为123.,则会记录123

如果输入值为123..,则会记录123

如果输入值为123.4,则会记录123.4

为什么会这样?有没有办法获得实际输入(不删除type="number")?

3 个答案:

答案 0 :(得分:2)

number输入可以容纳整数以及浮点数。

由于123.是整数,所以输入将返回整数123

另外123.4是有效的浮点数,因此输入的值为123.4

无法从数字输入类型返回诸如123.4之类的字符串,因为它不打算用于该类型。

答案 1 :(得分:0)

关键是e是一个表达式e²与e2相同,e后面没有任何数字,它是不完整的,并且该数字不会更改,因此不会保存“ e”。

与要点相同。末尾带有数字的数字本身就是数字,因此将不会保存。

您必须将其更改为文本,否则此行最后的“ e”不会保存。

答案 2 :(得分:0)

您可以将默认值存储在变量中,并在每次键入事件后更新该变量。

示例 HTML

<input type="number" onKeyup={event => this.eachKeyPress(event)} />

JS

let output = "";
function eachKeyPress(event){
  output += event.key;
  console.log("value : ",output );   
}