我在验证输入字段时遇到了一些问题。
这是我的验证码:
_validateInput: function(e) {
var value = e.currentTarget.value;
var key = e.which || e.keyCode;
var re = /[^0-9\.]/gi;
if (re.test(value + String.fromCharCode(key))) {
return value;
} else {
return value + String.fromCharCode(key);
}
},
逻辑是下一个。如果用户输入非数字字符,则该函数返回输入的当前值,不带最后一个符号。
如果用户输入数字或点,则功能返回当前输入值+输入的数字。
我的问题是什么:
1)不允许用户输入点。
2)点字符的String.fromCharCode返回“¾”符号。
3)退格,制表符等特殊符号不起作用。
4)Ctrl + V,Ctrl + A等命令也不起作用
有人可以帮我解决这个问题吗?我的RegEx有什么问题? 谢谢!
P.S。在keydown事件上触发的函数
答案 0 :(得分:2)
除非您需要支持旧版浏览器,否则请先监听oninput
而不是onkeydown
,并且会为您完成大量处理。
http://www.w3schools.com/jsref/event_oninput.asp
此事件类似于onchange事件。不同之处在于oninput事件在元素的值发生更改后立即发生,而onchange在元素失去焦点后发生,在更改内容之后。另一个区别是onchange事件也适用于< keygen>和< select>元件。
每当触发oninput
时,检查文本区域中的值是否有效,如果不是,则更正它。这也可以让您检查输入的多个点(如果您需要这样做)。例如,231.21.23
不是有效数字。