Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果处理字符串值的textarea是只读的,那么如何在使用javascript的虚拟键盘上使用capslock函数?_Javascript_Jquery - Fatal编程技术网

如果处理字符串值的textarea是只读的,那么如何在使用javascript的虚拟键盘上使用capslock函数?

如果处理字符串值的textarea是只读的,那么如何在使用javascript的虚拟键盘上使用capslock函数?,javascript,jquery,Javascript,Jquery,我用过这个代码,但它只检测capslock是开还是关 $(function () { var isShiftPressed = false; var isCapsOn = null; $("#txtName").bind("keydown", function (e) { var keyCode = e.keyCode ? e.keyCode : e.which; if (keyCode == 16)

我用过这个代码,但它只检测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();
            }
        });
    });
$(函数(){
var=false;
var isCapsOn=null;
$(“#txtName”).bind(“keydown”,函数(e){
var-keyCode=e.keyCode?e.keyCode:e.which;
if(keyCode==16){
IsShift=true;
}
});
$(“#txtName”).bind(“keyup”,函数(e){
var-keyCode=e.keyCode?e.keyCode:e.which;
if(keyCode==16){
IsShift=false;
}
如果(键代码==20){
如果(isCapsOn==true){
isCapsOn=false;
$(“#错误”).hide();
}else if(isCapsOn==false){
isCapsOn=true;
$(“#错误”).show();
}
}
});
$(“#txtName”).bind(“按键”,函数(e){
var-keyCode=e.keyCode?e.keyCode:e.which;
如果(键码>=65&&keyCode更换

$("#txtName")


这就是我使用的代码,所以当我在键盘上按a-z时,文本区域中会有a-z。但即使capslock在其上,仍然是小写的。

你可以使用onkeypress而不是onkeydown。后者只检测按下了哪个键;前者(尽管它的名称包含“keypress”)此链接详细说明:注意,并非所有浏览器都支持onkeypress

此外,将charcode转换为char的代码效率低下,并且正在将大写charcodes转换为小写chars。以下是一些用于侦听按键的代码,在每次按键时,都会提醒用户按下了哪个char

    document.onkeypress = function(event){
        event = event || window.event; 
        var key = event.keyCode;
        alert(String.fromCharCode(key));
    }

你想做什么?当然,代码在只读字段上不起作用,因为不会触发keypress,keydown事件。你怎么能做什么?我使用event.keycode在文本区域中有一个输出,即使它是只读的,但我想做的是当我在caps上单击时,我所按的值将在caps上像普通键盘一样锁定document.onkeydown=function(){document.getElementById(“txtInput”).focus();if(event.keyCode==“65”){document.getElementById(“txtInput”).value+=“a”;btnA.style.backgroundColor=“#00bff”;}if(event.keyCode==“66”){document.getElementById(“txtInput”).value+=“b”;btnB.style.backgroundColor=“#00bff”;}对不起,我听不懂你的英语;仍然不确定你的问题是什么。你一直在谈论的这个文本区域的ID是什么?这是我假设你的问题的答案。文本区域仍然没有输入,因为它处于只读状态,所以不要设置为只读?这就是只读的意思:只读:不可写。你有我甚至没有告诉我们哪个控件是textarea…我怀疑你甚至没有向我们显示你要询问的代码。你似乎在问为什么当textarea为只读时,textarea中应该显示的输出没有显示。你需要向我们显示试图设置该textarea值的代码。另一个问题请参阅我的其他答案猜猜你的问题可能是什么。是的,那是因为你没有添加正确的字符代码。参见我的第三个答案。另外,我不知道你从哪里得到了上面的代码,但它看起来非常糟糕。你有26个不需要的if块。你可以使用诸如charCodeAt和/或fromCharCode之类的函数。你不必感到抱歉,也许我有点苛刻。重点是有更好的方法。我不认为你自己写的…如果是这样的话,我很惊讶你还不知道你在使用大写代码。如果你不介意的话,你能改变我的代码,不使用太多if语句吗…谢谢:)你应该问一个单独的问题。
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";
                    }
    document.onkeypress = function(event){
        event = event || window.event; 
        var key = event.keyCode;
        alert(String.fromCharCode(key));
    }