我正在尝试修改我经常使用的现有JavaScript行来格式化表单字段中的美元金额条目,以便显示分数,即使没有输入。我已经使用了多年:
<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);" />
答案 0 :(得分:8)
正则表达式周围不应该有引号。你需要改变
this.value.replace('/[^0-9\.]+/g','')
到
this.value.replace(/[^0-9\.]+/g,'')
答案 1 :(得分:2)
你不应该引用你的正则表达式,所以整个第二行应该是:
<input maxlength="7" name="dollarvalue" size="8" onChange="javascript:this.value=parseFloat(this.value.replace(/[^0-9\.]+/g,'')).toFixed(2);" />