Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
Javascript 我是否可以将字符串返回到输入类型:键盘上的文本字段?_Javascript_String_Split_Onkeypress - Fatal编程技术网

Javascript 我是否可以将字符串返回到输入类型:键盘上的文本字段?

Javascript 我是否可以将字符串返回到输入类型:键盘上的文本字段?,javascript,string,split,onkeypress,Javascript,String,Split,Onkeypress,我有一个定义为列表的句子(一个字符串?一个数组?-我不确定正确的术语),我希望在按下任何键时按顺序返回。我正试着用。分开。以下是列表和函数: var list1 = "This is a test".replace(/\s/g, "\xA0").split("") function transformTypedChar(charStr) { var position = $("#verse1").text().length; if (position >= list1.le

我有一个定义为列表的句子(一个字符串?一个数组?-我不确定正确的术语),我希望在按下任何键时按顺序返回。我正试着用。分开。以下是列表和函数:

var list1 = "This is a test".replace(/\s/g, "\xA0").split("")
function transformTypedChar(charStr) {
    var position = $("#verse1").text().length;
    if (position >= list1.length) return '';
    else return list1[position];
}
目前,重复返回列表开头的“T”,忽略列表的其余部分。我按如下方式调用该函数:

document.getElementById("verse1").onkeypress = function(evt) {
    var val = this.value;
    evt = evt || window.event;

     // Ensure we only handle printable keys, excluding enter and space
    var charCode = typeof evt.which == "number" ? evt.which : evt.keyCode;
    if (charCode && charCode > 32) {
        var keyChar = String.fromCharCode(charCode);

           // Transform typed character
        var mappedChar = transformTypedChar(keyChar);

        var start, end;
        if (typeof this.selectionStart == "number" && typeof this.selectionEnd ==   
   "number") {
            // Non-IE browsers and IE 9
            start = this.selectionStart;
            end = this.selectionEnd;
            this.value = val.slice(0, start) + mappedChar + val.slice(end);

            // Move the caret
            this.selectionStart = this.selectionEnd = start + 1;
        } else if (document.selection && document.selection.createRange) {
            // For IE up to version 8
            var selectionRange = document.selection.createRange();
            var textInputRange = this.createTextRange();
            var precedingRange = this.createTextRange();
            var bookmark = selectionRange.getBookmark();
            textInputRange.moveToBookmark(bookmark);
            precedingRange.setEndPoint("EndToStart", textInputRange);
            start = precedingRange.text.length;
            end = start + selectionRange.text.length;

            this.value = val.slice(0, start) + mappedChar + val.slice(end);
            start++;

            // Move the caret
            textInputRange = this.createTextRange();
            textInputRange.collapse(true);
            textInputRange.move("character", start - (this.value.slice(0,   
start).split("\r\n").length - 1));
            textInputRange.select();
        }

        return false;
    }
};
如何按顺序返回整个列表?换句话说,在第一个按键事件中出现“T”,在第二个按键事件中出现“h”,依此类推。我可以在contenteditable div中实现这一点,但我使用的是输入类型:文本字段,因为我想在它们之间自动标记

整个代码在这里:

调用
$(el).text()
输入
元素上返回一个空字符串,您应该调用
$(el).val()