我试图修改现有的JavaScript行,我经常使用它来格式化表单字段中的美元金额条目,以便即使未输入美分也是如此。我已经使用了多年:从JavaScript中删除非数字或小数点INLINE
<input maxlength="7" name="dollarvalue" size="8" onChange="javascript:this.value=parseFloat(this.value).toFixed(2);" />
...但它打破如果输入不是数字或小数其他什么...所以我想我大概可以增加一个str.replace()
过滤掉不允许的字符。它需要完全独立(如图所示),以便我可以根据需要轻松地将这一行onChange
添加到表单字段。尽管如此,这仍然适用于数字,但不会剥离其他东西。我究竟做错了什么?
<input maxlength="7" name="dollarvalue" size="8" onChange="javascript:this.value=parseFloat(this.value.replace('/[^0-9\.]+/g','')).toFixed(2);" />
为什么地球上你这样做内联?你喜欢在任何地方复制相同的代码吗?我知道你希望能够将它添加到任何表单字段中,但是肯定可以使它成为一个库函数?请注意,您的正则表达式当前允许多个小数点。还要注意,你不需要说'javascript:',因为浏览器已经在任何事件处理器中期待JavaScript;如果你在锚标签的'href'属性中使用它,那么这个前缀只是必需的(只有有意义) - 你真的不应该这样做,但这是另一天的讨论。 – nnnnnn
为什么倒票?我通常每页最多使用一次...并且希望能够轻松地粘贴到我正在处理的任何项目上,而无需其他依赖项。我不滥用它,我只是需要超便携的东西,在我想快速格式化传入值的场合使用。 – techtheatre
我没有downvote(我从来没有downvoted,并在任何情况下,我不认为你的帖子应得的downvote)。人们常常没有充分的理由就会倒退 - 几个小时以前,有人就我的一个老问题和答案这样做了,却没有留下任何解释。有些人只是不明白_constructive_批评的概念... – nnnnnn