如果处理字符串值的文本区域是只读的,如何使用 JavaScript 在虚拟键盘上使用 CAPSLOCK 功能
how can i use capslock function on a virtual keyboard using javascript if the textarea that handles the string value is readOnly?
>我使用了这段代码,但它只检测Capslock是打开还是关闭。
$(function () {
var isShiftPressed = false;
var isCapsOn = null;
$("#txtName").bind("keydown", function (e) {
var keyCode = e.keyCode ? e.keyCode : e.which;
if (keyCode == 16) {
isShiftPressed = true;
}
});
$("#txtName").bind("keyup", function (e) {
var keyCode = e.keyCode ? e.keyCode : e.which;
if (keyCode == 16) {
isShiftPressed = false;
}
if (keyCode == 20) {
if (isCapsOn == true) {
isCapsOn = false;
$("#error").hide();
} else if (isCapsOn == false) {
isCapsOn = true;
$("#error").show();
}
}
});
$("#txtName").bind("keypress", function (e) {
var keyCode = e.keyCode ? e.keyCode : e.which;
if (keyCode >= 65 && keyCode <= 90 && !isShiftPressed) {
isCapsOn = true;
$("#error").show();
} else {
$("#error").hide();
}
});
});
但是,如果保存值的文本区域处于只读状态,则此功能不起作用。我该如何解决它?
替换
$("#txtName")
跟
$('body')
您可以使用onkeypress而不是onkeydown。 后者仅检测按下了哪个键;前者(即使与直觉相反,它的名字包括"按键")会给你字符。 此链接详细解释: http://unixpapa.com/js/key.html 请注意,并非所有浏览器都支持 onkeypress。
此外,用于将 charcode 转换为 char 的代码效率低下,并且您正在将大写 charcode 转换为小写字符。 下面是一些侦听按键的代码,并在每次按键上提醒用户按下了哪个字符。
document.onkeypress = function(event){
event = event || window.event;
var key = event.keyCode;
alert(String.fromCharCode(key));
}
if (event.keyCode == "65"){
document.getElementById("txtInput").value+=val1;
btnA.style.backgroundColor="#00bfff";
}
if (event.keyCode == "66"){
document.getElementById("txtInput").value+="b";
btnB.style.backgroundColor="#00bfff";
}
if (event.keyCode == "67"){
document.getElementById("txtInput").value+="c";
btnC.style.backgroundColor="#00bfff";
}
if (event.keyCode == "68"){
document.getElementById("txtInput").value+="d";
btnD.style.backgroundColor="#00bfff";
}
if (event.keyCode == "69"){
document.getElementById("txtInput").value+="e";
btnE.style.backgroundColor="#00bfff";
}
if (event.keyCode == "70"){
document.getElementById("txtInput").value+="f";
btnF.style.backgroundColor="#00bfff";
}
if (event.keyCode == "71"){
document.getElementById("txtInput").value+="g";
btnG.style.backgroundColor="#00bfff";
}
if (event.keyCode == "72"){
document.getElementById("txtInput").value+="h";
btnH.style.backgroundColor="#00bfff";
}
if (event.keyCode == "73"){
document.getElementById("txtInput").value+="i";
btnI.style.backgroundColor="#00bfff";
}
if (event.keyCode == "74"){
document.getElementById("txtInput").value+="j";
btnJ.style.backgroundColor="#00bfff";
}
if (event.keyCode == "75"){
document.getElementById("txtInput").value+="k";
btnK.style.backgroundColor="#00bfff";
}
if (event.keyCode == "76"){
document.getElementById("txtInput").value+="l";
btnL.style.backgroundColor="#00bfff";
}
if (event.keyCode == "77"){
document.getElementById("txtInput").value+="m";
btnM.style.backgroundColor="#00bfff";
}
if (event.keyCode == "78"){
document.getElementById("txtInput").value+="n";
btnN.style.backgroundColor="#00bfff";
}
if (event.keyCode == "79"){
document.getElementById("txtInput").value+="o";
btnO.style.backgroundColor="#00bfff";
}
if (event.keyCode == "80"){
document.getElementById("txtInput").value+="p";
btnP.style.backgroundColor="#00bfff";
}
if (event.keyCode == "81"){
document.getElementById("txtInput").value+="q";
btnQ.style.backgroundColor="#00bfff";
}
if (event.keyCode == "82"){
document.getElementById("txtInput").value+="r";
btnR.style.backgroundColor="#00bfff";
}
if (event.keyCode == "83"){
document.getElementById("txtInput").value+="s";
btnS.style.backgroundColor="#00bfff";
}
if (event.keyCode == "84"){
document.getElementById("txtInput").value+="t";
btnT.style.backgroundColor="#00bfff";
}
if (event.keyCode == "85"){
document.getElementById("txtInput").value+="u";
btnU.style.backgroundColor="#00bfff";
}
if (event.keyCode == "86"){
document.getElementById("txtInput").value+="v";
btnV.style.backgroundColor="#00bfff";
}
if (event.keyCode == "87"){
document.getElementById("txtInput").value+="w";
btnW.style.backgroundColor="#00bfff";
}
if (event.keyCode == "88"){
document.getElementById("txtInput").value+="x";
btnX.style.backgroundColor="#00bfff";
}
if (event.keyCode == "89"){
document.getElementById("txtInput").value+="y";
btnY.style.backgroundColor="#00bfff";
}
if (event.keyCode == "90"){
document.getElementById("txtInput").value+="z";
btnZ.style.backgroundColor="#00bfff";
}
这是我使用的代码,所以当我在键盘上按 A-Z 时,文本区域中会有 A-Z。但即使大写锁定在 ON 它仍然是小写的。
相关文章:
- javascript虚拟键盘
- iPad虚拟键盘-哪一个-javasctript解决方案
- 将select2与jQuery虚拟键盘配合使用
- JavaScript 中的虚拟键盘
- 虚拟键盘事件
- 虚拟键盘在更新到 Chrome v50 后不再工作
- 在Windows 8 Metro模式下,在浏览器中获取虚拟键盘的高度
- Javascript中的Mac/Windows弹出式虚拟键盘
- 虚拟键盘jquery在引导模式中显示错误
- 虚拟键盘出现问题
- 如果处理字符串值的文本区域是只读的,如何使用 JavaScript 在虚拟键盘上使用 CAPSLOCK 功能
- 一些功能可以确定三星八达上虚拟键盘的打开
- 如何使用虚拟键盘在 Opera Mobile 中为简单表单触发 onsubmit() 事件
- iPhone:点击/单击“开始”按钮后,虚拟键盘不会隐藏
- 打开虚拟键盘时,我的应用程序网页视图不会缩小
- 启用/禁用多个谷歌虚拟键盘
- 在iOS8中,使用.focus()将显示虚拟键盘并在触摸后滚动页面
- jQuery虚拟键盘插件在Windows8触摸设备上两次插入相同的字符
- 虚拟键盘/滚动奇怪事件
- Ipad上的虚拟键盘使输入[类型=范围]滑块拇指消失