html中,可以实现文本框不能键盘输入,可以粘贴值这个功能吗?

html中,可以实现文本框不能键盘输入,可以粘贴值这个功能吗?,第1张

首先想到的就是禁用文本框的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属性则不影响提交问题;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7231642.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存