Onkeydown javascript数学

Onkeydown javascript数学,javascript,arithmetic-expressions,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.ge

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

如果值低于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">

我建议将该代码拆分为一个单独的javascript函数,该函数位于

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

我在这里收集了一个非常快速的示例:

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

如果值等于20怎么办?@PeterMader if等于20或以上将乘以2,并在20的基础上加上30%,总计46。我同意。但是,对于小于20的值,JSFIDLE有一个错误,因为它连接而不是添加:
outputValue=outputValue+(inputValue*0.3)需要读取
outputValue=(outputValue*1)+(inputValue*0.3)。很好,我没有测试所有案例,因为答案只提供了一个示例输出。也可以通过解释为同一行中的数字值来解决:
outputValue=+outputValue+(inputValue*0.3)如果值低于10,则返回一个浮点数,如何将其更改为int?我应该在
document.getElementById('output')上面使用parsetInt(outputValue)。innerText=outputValue?@vankk是的,这将丢弃小数点。如果要对值进行四舍五入,应使用
Math.round()
@Felipe parsetInt(outputValue)返回此错误“ReferenceError:parsetInt未定义”