简单介绍:
IE中的event有很多keyCode,并且在不同的事件(onkeydown,onkeypress,onkeyup)中同一个键的keyCode也有可能不同。
onkeydown Event Fires when the user presses a key.
对于字母大小写不区分keyCode,a-z/A-Z的keyCode都是65-90
对于数字和小键盘的数字区分keyCode,0-9的keyCode是48-57,小键盘的数字0-9为96-105
onkeypress Event Fires when the user presses an alphanumeric key.
与onkeydown刚好相反
对于字母大小写区分keyCode,a-z/A-Z的keyCode都是65-90
对于数字和小键盘的数字区分keyCode,0-9的keyCode是48-57,小键盘的数字0-9为96-105
onkeyup Event Fires when the user releases a key.
1、只能输入字母、数字,且把小写字母转换成大写字母
<script language="javascript">
function checkChar() {
if ((event.keyCode < 48 && event.keyCode != 45)
|| (event.keyCode > 57 && event.keyCode < 65)
|| (event.keyCode > 90 && event.keyCode < 97)
|| event.keyCode > 122) {
event.returnValue = false;
}
if (event.keyCode >= 97 && event.keyCode <= 122) {
event.keyCode -= 32;
}
}
//因为这种做法不能防止用户拷贝中文,或者采用中文输入法输入中文
//所以只能在提交时,再次检查一下文本的值,并进行大小写转换
function check() {
var objVal = document.all("name").value;
var charCode = "";
var returnObj = "";
for (var i = 0; i < objVal.length; i++) {
charCode = objVal.charCodeAt(i);
if ((charCode < 48 && charCode != 45)
|| (charCode > 57 && charCode < 65)
|| (charCode > 90 && charCode < 97)
|| charCode > 122) {
alert("'" + objVal.charAt(i) + "' 该字符不合法,请输入字母、数字或中划线-!");
return false;
}
if (charCode >= 97 && charCode <= 122) {
charCode -= 32;
}
returnObj += String.fromCharCode(charCode);
}
document.all("name").value = returnObj;
return true;
}
</script>
<input type="text" name="name" onkeypress="checkChar()" onpaste="return false;">
<input type="button" name="btn" onclick="check()">
2、以下是在网上转载的别人的代码,觉得比较好,就摘抄下来
<script language=jscript>
function number() {
var char = String.fromCharCode(event.keyCode);
alert("number:"+char);
var re = /[0-9]/g;
event.returnValue = char.match(re) != null ? true : false
}
function filterInput() {
alert("filterInput:"+event.type);
if (event.type.indexOf("key") != -1) {
var re = /37|38|39|40/g
if (event.keyCode.toString().match(re)) return false
}
event.srcElement.value = event.srcElement.value.replace(/[^0-9]/g, "")
}
function filterPaste() {
var oTR = this.document.selection.createRange();
var text = window.clipboardData.getData("text");
oTR.text = text.replace(/[^0-9]/g, "");
}
</script>
<input onkeypress="number()" onkeyup="filterInput()" onchange="filterInput()" onbeforepaste="filterPaste()" onpaste="return false" style="ime-mode: disabled">
IE中的event有很多keyCode,并且在不同的事件(onkeydown,onkeypress,onkeyup)中同一个键的keyCode也有可能不同。
onkeydown Event Fires when the user presses a key.
对于字母大小写不区分keyCode,a-z/A-Z的keyCode都是65-90
对于数字和小键盘的数字区分keyCode,0-9的keyCode是48-57,小键盘的数字0-9为96-105
onkeypress Event Fires when the user presses an alphanumeric key.
与onkeydown刚好相反
对于字母大小写区分keyCode,a-z/A-Z的keyCode都是65-90
对于数字和小键盘的数字区分keyCode,0-9的keyCode是48-57,小键盘的数字0-9为96-105
onkeyup Event Fires when the user releases a key.
1、只能输入字母、数字,且把小写字母转换成大写字母
<script language="javascript">
function checkChar() {
if ((event.keyCode < 48 && event.keyCode != 45)
|| (event.keyCode > 57 && event.keyCode < 65)
|| (event.keyCode > 90 && event.keyCode < 97)
|| event.keyCode > 122) {
event.returnValue = false;
}
if (event.keyCode >= 97 && event.keyCode <= 122) {
event.keyCode -= 32;
}
}
//因为这种做法不能防止用户拷贝中文,或者采用中文输入法输入中文
//所以只能在提交时,再次检查一下文本的值,并进行大小写转换
function check() {
var objVal = document.all("name").value;
var charCode = "";
var returnObj = "";
for (var i = 0; i < objVal.length; i++) {
charCode = objVal.charCodeAt(i);
if ((charCode < 48 && charCode != 45)
|| (charCode > 57 && charCode < 65)
|| (charCode > 90 && charCode < 97)
|| charCode > 122) {
alert("'" + objVal.charAt(i) + "' 该字符不合法,请输入字母、数字或中划线-!");
return false;
}
if (charCode >= 97 && charCode <= 122) {
charCode -= 32;
}
returnObj += String.fromCharCode(charCode);
}
document.all("name").value = returnObj;
return true;
}
</script>
<input type="text" name="name" onkeypress="checkChar()" onpaste="return false;">
<input type="button" name="btn" onclick="check()">
2、以下是在网上转载的别人的代码,觉得比较好,就摘抄下来
<script language=jscript>
function number() {
var char = String.fromCharCode(event.keyCode);
alert("number:"+char);
var re = /[0-9]/g;
event.returnValue = char.match(re) != null ? true : false
}
function filterInput() {
alert("filterInput:"+event.type);
if (event.type.indexOf("key") != -1) {
var re = /37|38|39|40/g
if (event.keyCode.toString().match(re)) return false
}
event.srcElement.value = event.srcElement.value.replace(/[^0-9]/g, "")
}
function filterPaste() {
var oTR = this.document.selection.createRange();
var text = window.clipboardData.getData("text");
oTR.text = text.replace(/[^0-9]/g, "");
}
</script>
<input onkeypress="number()" onkeyup="filterInput()" onchange="filterInput()" onbeforepaste="filterPaste()" onpaste="return false" style="ime-mode: disabled">
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南