首先想到的就是禁用文本框的onkeydown事件了:
<input type="text" onkeydown="return false">这样文本框不能输入任何字符,可以用鼠标右键菜单的“粘贴”来粘贴复制的字符,但这样做有一个缺点:粘贴的快捷键也被禁用了,无法使用Ctrl+V来粘贴值。所以我们改造一下代码:
<input type="text" id="demo"> document.getElementById('demo').onkeydown = function(event) {var evt = event || window.event
if (evt.ctrlKey && evt.keyCode == 86) { // ctrl + v
console.log('粘贴快捷键按下')
} else {
return false
}
}
至此以上代码已基本满足预期要求,但你会发现粘贴进去的内容没办法删除(因为backspace和delete键也被禁用了),所以最终的代码应该是这样的:
document.getElementById('demo').onkeydown = function(event) {var evt = event || window.event
console.log(evt.keyCode)
if (evt.ctrlKey && evt.keyCode == 86) { // ctrl + v
console.log('粘贴快捷键按下')
} else if (evt.keyCode == 8 || evt.keyCode == 46) { // backspace和delete键
} else {
return false
}
}
限制键盘不能输入吗?<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<title>无标题文档</title>
<script>
// 样式 style="ime-mode:disabled" 禁止中文输入
function noPermitInput(e){
var evt = window.event || e
if(isIE()){
evt.returnValue=false//ie 禁止键盘输入
}else{
evt.preventDefault()//fire fox 禁止键盘输入
}
}
function isIE() {
if (window.navigator.userAgent.toLowerCase().indexOf("msie") >= 1)
return true
else
return false
}
</script>
</head>
<body>
禁止键盘按键输入及中文输入
<input type="text" value="" style="ime-mode:disabled" onkeypress="noPermitInput(event)" >
</body>
</html>
作用范围不同
disabled属性可以用语所有的表单元素;readonly属性只对input(输入框)、textarea有效;
对元素的影响程度不同
disabled属性阻止对元素的一切 *** 作,例如获取焦点,点击事件等等;readonly属性只是将元素设置为只读,其他 *** 作正常;
表单提交
disabled属性可以让表单元素的值无法被提交;readonly属性则不影响提交问题;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)