如何在JavaScript或jQuery中模拟按下退格键
我花了一个小时阅读了上百万篇不同的帖子,但没有一篇获奖。 简单地说。我已经创建了一个屏幕键盘。 当用户按下字母按钮时,字母将以克拉插入具有焦点的输入中。 这一切都很好,我知道如何插入所有的字母、数字和空格,但我不知道如何在克拉退格。我知道如何去掉最后一个字符,但这是无效的,因为我希望它在克拉退格 我将插入代码以显示它是如何设置的。。。唯一不起作用的部分是如何在JavaScript或jQuery中模拟按下退格键,javascript,html,jquery,Javascript,Html,Jquery,我花了一个小时阅读了上百万篇不同的帖子,但没有一篇获奖。 简单地说。我已经创建了一个屏幕键盘。 当用户按下字母按钮时,字母将以克拉插入具有焦点的输入中。 这一切都很好,我知道如何插入所有的字母、数字和空格,但我不知道如何在克拉退格。我知道如何去掉最后一个字符,但这是无效的,因为我希望它在克拉退格 我将插入代码以显示它是如何设置的。。。唯一不起作用的部分是if($(this).html()=='BKSP')块中的行 请,谢谢 function insertAtCursor(myField, myV
if($(this).html()=='BKSP')
块中的行
请,谢谢
function insertAtCursor(myField, myValue) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
}
//MOZILLA and others
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
} else {
myField.value += myValue;
}
}
$("#keyboard").on("pointerdown", function(e){
e.preventDefault();
});
$(".sm-kb-btn").on("pointerdown", function (e) {
if ($(this).html() == 'BKSP') {
var e = new Event("keydown");
e.key = "Backspace";
e.code = "Backspace";
document.getElementById("search-box-input").dispatchEvent(e);
}
else {
insertAtCursor(document.getElementById("search-box-input"), $(this).html());
}
})
出于安全原因,浏览器和javascript在访问设备硬件时有限制。您可以抛出
keydown
事件,但它不会执行与实际按键相同的操作
如果您的目标只是保持插入符号位置,则可以使用selection.setSelectionRange(插入符号位置,插入符号位置)
下面是一个演示:
let output=document.querySelector('input');
document.querySelector(“.buttons”).addEventListener('click',函数(e){
如果(e.target.nodeName=='BUTTON'){
让插入符号位置=output.selectionStart | | 0,//当前插入符号位置
character=e.target.textContent,//按下按钮/键
新的插入符号位置=Math.max(0,插入符号位置+(字符=='BKSP'?-1:1));
//如果是BKSP,则移动插入符号-1,否则移动插入符号+1。同时确保它>=0
如果(字符=='BKSP'){//删除当前插入符号位置之前的字符
output.value=output.value.substr(0,新插入符号位置)+output.value.substr(插入符号位置);
}else{//在当前字符位置插入字符
output.value=output.value.substr(0,插入符号位置)+字符+output.value.substr(插入符号位置);
}
//修改output.value后重置插入符号位置
output.setSelectionRange(新插入符号位置、新插入符号位置);
}
});代码>
按钮{
高度:24px;
利润率:16px4px;
}
Q
W
E
R
T
Y
BKSP
我在if块中添加了以下代码(根据您提交的内容编辑),现在它工作正常:let output=document.getElementById(“搜索框输入”);让插入符号位置=output.selectionStart | | 0,//当前插入符号位置字符=e.target.textContent,//按钮/键按下new(新插入符号位置=数学.max(0,插入符号位置+-1);output.value=output.value.substr(0,新插入符号位置)+output.value.substr(插入符号位置);output.setSelectionRange(新插入符号位置、新插入符号位置);是的,我只做了最少的测试。很高兴我能帮你指出正确的方向。