允许在输入验证

时间:2015-11-30 16:15:56

标签: javascript regex validation

我在验证输入字段时遇到了一些问题。

这是我的验证码:

    _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事件上触发的函数

1 个答案:

答案 0 :(得分:2)

除非您需要支持旧版浏览器,否则请先监听oninput而不是onkeydown,并且会为您完成大量处理。

http://www.w3schools.com/jsref/event_oninput.asp

  

此事件类似于onchange事件。不同之处在于oninput事件在元素的值发生更改后立即发生,而onchange在元素失去焦点后发生,在更改内容之后。另一个区别是onchange事件也适用于< keygen>和< select>元件。

每当触发oninput时,检查文本区域中的值是否有效,如果不是,则更正它。这也可以让您检查输入的多个点(如果您需要这样做)。例如,231.21.23不是有效数字。