为什么不't Javascript对我的输入值进行了一些重新检查
Why doesn't Javascript put some respeck on my input value?
我目前正在开发一款预算软件,遇到了这个奇怪的bug。首先是我的代码:
<label class="label label-success">Choose your budget</label><br/><br/>
<div class="input-group-addon">€</div>
<input type="number" min="10" max="25000" maxlength="5" step="10" class="form-control" id="Input-budget" placeholder="Amount" onkeyup="this.value=this.value.replace(/[^'d]/,'')" onchange="budCalculate(this.value)">
这是输出线路:
<li>
<strong>
Total cost: <span id="cost_eur">€0.00 </span> (<span id="cost_usd" class="small">$0.00</span>)
</strong>
</li>
这是Javascript:
function budCalculate(budget_amount) {
var budget = budget_amount;
cost_eur.innerHTML = "€"+((budget).toFixed(2);
cost_usd.innerHTML = "$"+ (budget * 1.13 ).toFixed(2);
}
它应该把输入的值放在输出线上。
onkeyup
是为了防止人们打字。
我尝试过各种变体,有趣的是,几乎相同的代码在一个看起来相似的页面上工作。
为什么JavaScript不重新检查我的值?
我怀疑问题在于budget
不是数字对象。this.value
将传递一个字符串对象。我建议更改您的功能:
function budCalculate(budget_amount) {
var budget = 0;
console.log(typeof budget_amount);
budget = parseFloat(budget_amount);
cost_eur.innerHTML = "€" + budget.toFixed(2);
cost_usd.innerHTML = "$" + ( budget * 1.13 ).toFixed(2);
return budget;
}
现在,您可以看到正在传递的对象类型。parseFloat()
应纠正该问题。
工作示例:https://jsfiddle.net/Twisty/bqjg50sb/
相关文章:
- 检查对象数组中的重复项并创建一个新项
- 检查文档是否已经存在,如果是则更新,否则创建新的Mongoose
- Javascript:检查window.fullScreen是否为假,然后在新窗口中全屏打开url
- 检查网格插件 ExtJs 中的新元素
- 如何乘法和检查新插入行的字段
- 使用 PHP 设置的 cookie 在 js 重定向和新的 PHP 脚本使用 isset 检查后不可用
- 在 d3.js 中,如何在不进行新选择的情况下检查元素是否已被删除
- 检查所选行是否是新添加的
- 检查新用户
- 使用 JavaScript 检查在固定时间内有效的新时间
- 将 JavaScript 计时器与 signalR 事件结合使用来检查新数据
- 我使用以下代码检查新周是否与已创建的周匹配,然后显示警报
- 验证以检查数据库中是否已存在用户名,而无需加载新页面
- 检查数字是否在数组中,如果是,则生成新数字
- 如何检查新克隆的节点是否是javascript中的最后一个节点
- 如何检查 mysql 上是否有新数据
- jQuery间隔脉冲指定一个新的随机数,而不是检查正确答案
- 检查现有网页上的新元素
- 检查窗口是否打开,并且只打开一次新窗口
- Mongodb,在插入新值之前检查对象/模型的数组