我想禁止用户将字符输入到不是字母或数字的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>
答案 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范围内,并且将使用不同的编码。需要考虑的事情。
答案 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');
});
尝试这一个