纯JavaScript解决方案编号输入将显示2位小数
我试图使用以下代码(在此处找到:)在输入失去焦点/onchange时强制数字输入显示两位小数:纯JavaScript解决方案编号输入将显示2位小数,javascript,html,cross-browser,decimal,Javascript,Html,Cross Browser,Decimal,我试图使用以下代码(在此处找到:)在输入失去焦点/onchange时强制数字输入显示两位小数: function setDecimal(event) { this.value = parseFloat(this.value).toFixed(2); } <input placeholder="$0.00" type="number" onchange="setDecimal" name="amount_20_20_amt" id="amount_20_20_amt" value=
function setDecimal(event) {
this.value = parseFloat(this.value).toFixed(2);
}
<input placeholder="$0.00" type="number" onchange="setDecimal" name="amount_20_20_amt" id="amount_20_20_amt" value="" autocomplete="off" min="0" max="50000000" step="0.01">
我不能使用jQuery或任何其他库(业务规则),我需要它在输入失去焦点时显示。将步骤调整为“.01”或“任意”无法完成此操作
JS存储在一个加载良好的.JS文件中,而.JS文件中的其他所有内容都运行良好,因此我认为这一定是代码段中的错误,尽管我不知道是什么原因
哪里出错了?您需要在
onchange
中调用函数。目前,您只是在引用它
更改此项:
onchange="setDecimal"
……为此:
onchange="setDecimal(this)"
此
将输入传递给函数
然后将函数更改为:
function setDecimal(input) {
input.value = parseFloat(input.value).toFixed(2);
}
函数setDecimal(输入){
input.value=parseFloat(input.value).toFixed(2);
}
您需要在onchange
中调用函数。目前,您只是在引用它
更改此项:
onchange="setDecimal"
……为此:
onchange="setDecimal(this)"
此
将输入传递给函数
然后将函数更改为:
function setDecimal(input) {
input.value = parseFloat(input.value).toFixed(2);
}
函数setDecimal(输入){
input.value=parseFloat(input.value).toFixed(2);
}
无论何时调用函数,此
都是根据调用函数的方式设置的。如果对对象调用函数(例如,myObject.doTheThing()
),则当您在该函数的作用域内时,此
将是该对象。如果调用this
时没有对象,则this
将成为全局对象(窗口
)
您的第二个示例之所以有效,是因为您正在传递此
,以便可以将其引用为el
。通过执行以下操作,可以达到相同的效果:
function setDecimal(input) {
input.value = parseFloat(input.value).toFixed(2);
}
<input placeholder="$0.00" type="number"
onchange="setDecimal(this)" name="amount_20_20_amt" id="amount_20_20_amt"
value="" autocomplete="off" min="0" max="50000000" step="0.01">
无论何时调用函数,此
都是根据调用函数的方式设置的。如果对对象调用函数(例如,myObject.doTheThing()
),则当您在该函数的作用域内时,此
将是该对象。如果调用this
时没有对象,则this
将成为全局对象(窗口
)
您的第二个示例之所以有效,是因为您正在传递此
,以便可以将其引用为el
。通过执行以下操作,可以达到相同的效果:
function setDecimal(input) {
input.value = parseFloat(input.value).toFixed(2);
}
<input placeholder="$0.00" type="number"
onchange="setDecimal(this)" name="amount_20_20_amt" id="amount_20_20_amt"
value="" autocomplete="off" min="0" max="50000000" step="0.01">
看看@RoydonD'Souza——这个答案涉及四舍五入,我绝对不希望这样,因为toFixed会完成这项工作。我更感兴趣的是,为什么我正在应用的代码似乎没有按预期运行(以及为什么内联代码能够工作)。请查看@RoydonD'Souza——这个答案涉及舍入,我肯定不希望舍入,因为toFixed可以完成这项工作。我更感兴趣的是,为什么我正在应用的代码似乎没有按预期运行(以及为什么内联代码能够工作)。好的建议,我喜欢这个BAM!工作完美。非常感谢。Rick你太快了,我使用了完全相同的变量名称input
,但不幸的是我迟到了:)看看fiddle@dangowans,这是正确的,它只影响Firefox。相关:好建议,我喜欢这个BAM!工作完美。非常感谢。Rick你太快了,我使用了完全相同的变量名称input
,但不幸的是我迟到了:)看看fiddle@dangowans,这是正确的,它只影响Firefox。相关的: