gpt4 book ai didi

javascript - 预先确定的消息类型在按键时输出

转载 作者:行者123 更新时间:2023-11-30 06:38:26 25 4
gpt4 key购买 nike

我有一个 contenteditable 的 div,其 id 为“editable”。我希望最终结果是用户键入,而不是物理键事件,而是出现一条预先确定的消息。

例如,如果预先确定的消息是单词“Sing”,那么无论用户先输入什么字母,出现的第一个字母都是“S”,在第二次按键时出现“i”会出现,等等。

我在这个论坛上找到了模拟更改与键事件关联的字符的代码,并且我修改了代码以实现示例中的“S”。我粘贴了下面的代码并在此处创建了它:http://jsfiddle.net/Ukkmu/61/

当然,这段代码给了我无限次“S”。我被卡住的地方是只执行一次这个函数,然后为“i”调用另一个函数,然后是“n”等等。
我已经找到了一个我认为可能有用的切换功能的可能线索,但无法辨别如何将其应用到我的代码中。

function transformTypedCharacter(charStr) {
return /[a-z]/.test(charStr) ? "S" : /[A-Z]/.test(charStr) ? "S" : charStr;
}

function insertTextAtCursor(text) {
var sel, range, textNode;
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0).cloneRange();
range.deleteContents();
textNode = document.createTextNode(text);
range.insertNode(textNode);

// Move caret to the end of the newly inserted text node
range.setStart(textNode, textNode.length);
range.setEnd(textNode, textNode.length);
sel.removeAllRanges();
sel.addRange(range);
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
range.pasteHTML(text);
}
}


$("#editable").keypress(function(evt) {
if (evt.which) {
var charStr = String.fromCharCode(evt.which);
var transformedChar = transformTypedCharacter(charStr);
if (transformedChar != charStr) {
insertTextAtCursor(transformedChar);
return false;
}
}
});

最佳答案

改用这个:

var list = "Sing".split('');
function transformTypedCharacter(charStr) {
return /[a-zA-Z]/.test(charStr) ? list.shift()||" " : charStr;
}

但是我不确定这是否真的是最好的方法,因为 transformTypedCharacter 可能不会以与预期输出字符串相对应的线性方式调用。如果您按下退格键,您可能会返回一些字符两次,如果您按下变音符等,它们将被插入到您的结果中的某处。

关于javascript - 预先确定的消息类型在按键时输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com