<input type="number" min="1" onkeyup="this.value=this.value.replace(/[^\d]/,'')"name="Qty[]" placeholder="Qty" value="0">
这是我的html输入,使用这个正则表达式,我可以替换所有字母表。输入被消隐。 虽然我试着像这样投入零
onkeyup="this.value=this.value.replace(/[^\d]/,'0')"
但它不会用零代替它。上面提供的表达式也替换了整个字符串,而我想输入'1234a' 它只是删除'a'。所以任何一个人都可以告诉我如何用0替换整个字母表,或者只是从输入中删除字母表。
示例输入: 1234A
预期产出: 0或1234
答案 0 :(得分:4)
之所以如此,是因为除非是数字,否则您无法使用input[type=number]
获取this.value
的原始值。在任何其他情况下,它将返回一个空字符串。见How to get the raw value an <input type="number"> field?
相反,你可以做的是使用输入类型的文本,即
<input type="text" min="1" onkeyup="this.value=this.value.replace(/[^\d]/g,'0')"name="Qty[]" placeholder="Qty" value="0">
这是小提琴:http://jsfiddle.net/jcs2zh5e/
另外,如果用户pastes
某些值进入字段,那么你错过了全局修饰符,这会导致正则表达式不能替换所有字母和第一个字母。要解决这个问题,请添加g
。