Javascript 如何转换输入的数字,使前两个数字在输入时变成小数

Javascript 如何转换输入的数字,使前两个数字在输入时变成小数,javascript,html,forms,input,Javascript,Html,Forms,Input,这可能已经得到了回答,但我找不到。我正在制作一个带有数字输入的表格,用于提交物品价格(小数点后两位)。我希望这样做,而不必手动输入小数点。理想情况下使用一些oninput内联javascript。我在玩数学函数,但对javascript还是新手,运气不好 如果输入1,它将自动变为0.01 。。。或12变为0.12 。。。123变为1.23等 谢谢你的帮助 <input type=number min=0.00 max=100.00 step=0.01 class='detailsInput

这可能已经得到了回答,但我找不到。我正在制作一个带有数字输入的表格,用于提交物品价格(小数点后两位)。我希望这样做,而不必手动输入小数点。理想情况下使用一些oninput内联javascript。我在玩数学函数,但对javascript还是新手,运气不好

如果输入1,它将自动变为0.01

。。。或12变为0.12

。。。123变为1.23等

谢谢你的帮助

<input type=number min=0.00 max=100.00 step=0.01 class='detailsInput' id='priceEntry' name='priceEntry' placeholder='Enter Price' oninput='(Math.round(priceEntry*100)/100)(this)'>

只需获取输入的“实际值”。确保删除任何小数点。。。。将其解析为整数并除以100。返回。;)

document.querySelector(“.detailsInput”).addEventListener(“输入”,函数(e){
让actualValue=e.target.value.replace(“.”,“”)
e、 target.value=parseInt(实际值)/100
})

首先,祝贺您的第一次贡献。
其次,您可以使用dataset实现这一点,因为您需要先将用户输入保存在某个位置,然后对其执行任何类型的筛选。。。
此处:我对数据集执行了筛选。。但是,如果您不介意使用脚本标记的话,UX可能有很多更好的方法。
函数explainerHandler(){
const inputVal=document.querySelector('input').dataset.value
document.querySelector('.input_val')。textContent=inputVal
}


您特别要求提供一个内嵌式JavaScript解决方案。(“理想情况下使用一些oninput内联javascript。”)

你很接近。使用
oninput
意味着您的代码将在每次修改输入字段时触发。因此,请注意更改为
onchange
。这将等待您完成对字段的编辑(您也可以使用
onblur

因此,简单的算法是:

this.value/=100

需要放置在可执行函数表达式中的:

()=>this.value/=100

正如您清楚地理解的,这必须通过函数包装器(或您使用的IIFE)传递:

(()=>this.value/=100)(

注意:您可能意识到,出于许多原因,不鼓励使用内嵌JavaScript。这就是为什么您会在这里找到鼓励您以其他方式使用JavaScript的答案。
这不是使用
oninput
标记选项,而是在脚本中使用JS选项。也许它会帮助你或其他有类似问题的人

您可以将Intl.NumberFormat与eventlistener一起使用。有关更多信息,请参阅

let price=document.getElementById('priceEntry');
let display=document.getElementById('display');
让format=document.getElementById('format');
var货币=新的国际编号格式('en-US'{
风格:“货币”,
货币:美元,
});
format.addEventListener('click',function()){
//检查值是否为十进制,若不是,则除以100,使用formatter生成十进制else格式
price.value.indexOf(“.”)=-1?display.textContent=currency.format(price.value/100):display.textContent=currency.format(price.value);
})
格式

在您的代码片段上尝试此操作。。。输入123。变得模糊不清现在尝试修改输入并再次模糊。;)工作完美。你看到了什么?当我添加4秒模糊时,我看到了0.01234。@LouySpatriceBesette所以第二次,当输入中有
1.23
时,你添加了
4
,如下所示:
1.234
?这不是要求。你在四处游荡,试图把其他答案弄错,而不是把注意力集中在需求上。但没关系,我不介意验证我的答案。所以谢谢你!我不是到处闲逛。如果另一个答案比我的好,我会投它一票。我在这里发表评论只是为了帮助你帮助别人不要太在意。输入123会得到123.00美元。。。不是1.23美元;)@LouysPatriceBesette感谢您指出这一点,并使用conditional编辑了eventhandler。感谢您的帮助!内联版本非常好用!伟大的但我会选择一个可以处理许多输入的事件侦听器。。。你的电话<代码>这个出现在我的SO时间表中!