我试过这段代码:
$(document).keyup((e)=>{
var k = e.key
if(e.keyCode == 8){
console.log(e.keyCode)
var d =$("#inp").val()
$("#inp").remove(k+d)
}
})
答案 0 :(得分:2)
这样做。检查代码段。使用keydown
代替keyup
。
$(document).keydown((e)=>{
if(e.keyCode == 8){
console.log(e.keyCode);
e.preventDefault();
var d = $("#inp").val();
$("#inp").val(d.slice(0,-1))
}
})

<input type="text" id="inp" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:2)
您不使用remove()
删除字符,remove()
是一个jQuery函数,从DOM中删除元素节点。
为了能够在document
中的任何位置点击退格时删除最后一个字符,您应该使用val()
将最后一个字符切换为最后一个字符,请参阅下面的代码。 />
另外,使用keydown
是一个更好的主意,因为如果你持有keyup
的退格按钮,它就不会删除,当你释放按钮时它只删除一个字符。
当你专注于输入时,如果你没有添加preventDefault();
,它将删除2个字符,因为退格的正常行为+从函数中删除的一个......
$(document).keydown((e)=>{
var k = e.key
if(e.keyCode == 8){
e.preventDefault();
var d = $("#inp").val();
$("#inp").val(d.slice(0,-1));
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="inp" value='abcdefghj'/>
答案 2 :(得分:2)
您应该使用keydown
代替keyup
,并且必须取消原始活动(使用preventDefault()
),否则您将删除 2个字符
$(document).keydown((e)=>{
var k = e.key
if(e.keyCode == 8){
e.preventDefault();
var d = $("#inp").val();
$("#inp").val(d.slice(0,-1));
}
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="inp" value='test text to delete'/>
&#13;
如果您使用keyup
,则事件已经执行,因此您无法取消该事件。
答案 3 :(得分:1)
获取输入值后只是一个切片并在输入中保存为新的val:
$(document).keydown((e)=>{
if(e.keyCode == 8){
console.log(e.keyCode)
var d = $("#inp").val();
$("#inp").val(d.slice(0,-1))
}
})