Onkeydown javascript数学

时间:2017-07-19 17:05:37

标签: javascript arithmetic-expressions

我正在尝试创建一个脚本,用户在字段中输入一个数字,脚本会返回如下值:

如果该值低于20,则不会乘以2;
如果该值大于20,则将乘以2;

在这两种情况下,它总是会根据用户设置的值添加30%。例如:

如果用户设置为20,则总共显示46。

当用户访问该页面时,该字段将始终显示为20。

我试着这样做,但我无法做到

<input type="text" class="form-control" name="amount" id="amount" value="20"

  onkeydown="document.getElementById(\'coins\').value =
    Math.floor(this.value * 2) + \' coins\' + (int)
    getPercentOfNumber($this.value, 30);"

  onkeypress="document.getElementById(\'coins\').value =
    Math.floor(this.value * 4) + \' coins\' + (int)
    getPercentOfNumber($this.value, 30);"

  onkeyup="if(this.value.indexOf(\'.\') + 3 < this.value.length)
    this.value = this.value.substring(0, this.value.indexOf(\'.\') + 3);
    document.getElementById(\'coins\').value =
    Math.floor(this.value * 4) + \' coins\' + (int)
    getPercentOfNumber($this.value, 30);"

  onblur="this.value=Math.max(1,this.value);
    document.getElementById(\'coins\').value = Math.floor(this.value * 4) +
    \' coins\'  + (int) getPercentOfNumber($this.value, 30);"

onmaxlength="3">

1 个答案:

答案 0 :(得分:1)

我建议将该代码拆分为<head>

中的单独javascript函数

此外,您不需要使用所有关键事件,onkeyup应该足以满足您的需求。

我在这里放了一个非常快速的样本: https://jsfiddle.net/89xa1c5p/1/

编辑: 使用parseInt()parseFloat()确保输入不被视为字符串,并且在下面的操作中不会发生字符串连接