我正在尝试使用javascript / jquery限制用户输入的内容。
问题是,我必须将此限制为仅限大写字符和数字。
以下是我之前编写的内容:
$(input).keypress(function(e){
if ($(input).attr("class")=="populationReference"){
var ValidPattern = /^[A-Z_0-9]*$/;
var char = String.fromCharCode(e.charCode);
if (!ValidPattern.test(char) && e.charCode!=0){
return false;
e.preventDefault();
}
}
});
如果Firefox支持charCode,IE则不支持。那么,我可以测试用户是否输入大写或小写字符? 谢谢你的帮助!
答案 0 :(得分:2)
改为使用keypress()
事件。在IE中,所有keydown
和keyup
都指定了按下了哪个键盘键代码 - 它不会考虑控制键并相应地修改键码。 keypress
事件指定键入的字符代码。请注意,它不适用于某些系统键:
从Microsoft Internet Explorer 4.0开始,onkeypress事件将触发,可以取消以下键:
- 字母:A - Z(大写和小写)
- 数字:0 - 9
- 符号:! @#$%^& *()_ - + =系统:ESC,空格键,ENTER
自编辑以来 - 您需要使用e.which
代替e.charCode
。
答案 1 :(得分:1)
也可以使用e.which
代替e.charCode
。
答案 2 :(得分:1)
来自keypress()
的jquery手册:
确定哪个角色 进入,我们可以检查事件 传递给处理程序的对象 功能。虽然浏览器使用不同 用于存储此信息的属性, jQuery规范化.which属性 所以我们可以可靠地使用它来检索 字符代码。
换句话说,如果你使用的是jquery,你可以安全地使用e.which
来返回字符代码,所以在你的情况下:
var char = String.fromCharCode(e.which);
是要做的改变。
但就个人而言,我会避免通过为用户转换来惩罚用户的小写输入。也许添加这个修改:
$("input.populationReference").keypress(function(e){
var ValidPattern = /^[A-Z_a-z_0-9]*$/;
var char = String.fromCharCode(e.charCode);
if (!ValidPattern.test(char) && e.charCode!=0){
return false;
e.preventDefault();
} else {
var inputval = $(this).value();
$(this).value(inputval.toUpperCase());
}
});