开发者

Disallowing keystrokes in the textarea with jQuery

In the Twitter signup process, they do not allow you to input any character other than alphanumeric keywords

What would be a good way, efficient way of doing so? The plugins available seems to be a little too slow for my liking, so i was wondering if anyone had more efficient way of开发者_如何学编程 doing so


You can listen for keydown/keypress, check the character code, and if it's not something you want preventDefault() or return false

Implementation

Here's an example with jQuery. This creates a list of 'valid' keycodes, initially populated with formatters (Escape, Backspace etc) and then populates the array with other valid keys.

$('input').keydown(function(e) {
    var a=[8,9,13,16,17,18,20,27,35,36,37,38,39,40,45,46,91,92];
    var k = e.which;

    for (i = 48; i < 58; i++) // 0-9 on top of keyboard
        a.push(i);
    for (i = 65; i < 91; i++) // a-z
        a.push(i);
    for (i = 96; i < 106; i++) // 0-9 on numpad
        a.push(i);

    if (!(a.indexOf(k)>=0)) // prevents disabled keys
        e.preventDefault();
});​

You can also use this array to check validity of the username before submitting, by iterating through each character in the string and making sure it's one of these.

Try it out here

http://jsfiddle.net/vRJ2v/


I use this plugin: http://code.google.com/p/jquery-keyfilter/

I haven't had any issues with delay.


You can write an event handler for the keydown event which stops the propagation of the event if the text does not match a regular expression for example.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜