如何从jQuery中的事件对象获取keypress值

时间:2009-05-17 08:34:02

标签: jquery

我想禁止用户将字符输入到不是字母或数字的HTML文本输入字段中。

这个确切的功能可以在Twitter注册页面(用户名字段)https://twitter.com/signup上看到。

我试图在jQuery中写这个。但我需要能够获取incomming keypress事件值以测试按下了哪个键以及它的值是否可接受。

以下是代码:

<input type="text" id="username" name="username" />

<script type="text/javascript">
$("#username").keypress(function(event){   

 // Get the keypress value
 // ...?

// If the keypress value is illegal then disable it
if (...){
   event.preventDefault();
}

});
</script>

3 个答案:

答案 0 :(得分:33)

您可以使用事件对象的“which”属性来捕获键码。您可以使用类似以下代码的内容来获取相应的字符 -

var c = String.fromCharCode(e.which);

有关详细说明,请参阅链接http://api.jquery.com/keypress/

答案 1 :(得分:2)

当用户按下某个键时,相应的ascii代码就是该事件中发送的内容。使用e.which字段

所以你的条件可能看起来像这样:

if ( e.which > 47 &&  e.which < 58)
{
    // it is a number
}

您可以通过许多不同的方式编写条件。可能通过使用允许的字符映射到数组中。

供参考, 大写:65 - 90 小写:97 - 122

您应该意识到这会使您的应用仅适用于使用标准ASCII设置的英文输入的人。国际用户将无法在您的表单字段中写入,因为这些密钥代码不在标准ASCII范围内,并且将使用不同的编码。需要考虑的事情。

Ascii代码:http://www.petefreitag.com/cheatsheets/ascii-codes/

答案 2 :(得分:0)

    var ako ='';
    var novalue = '';
    jQuery('html').keypress(function(event){
        var valuekey = event.charCode;
        ako = String.fromCharCode(event.which);
        jQuery('.a').each(function(){
            var cn = jQuery(this).html();
            if(ako == cn){
                jQuery(this).hide('explode',{},'10000').remove();
            }   
            novalue +=cn;
        });
        //alert(novalue);
        jQuery("#cn").animate({width:'400px',border:'1px solid pink'},'slow');
    });

尝试这一个