jQuery:如何从输入按退格键中删除最后一个字符?

时间:2018-04-27 10:52:55

标签: jquery

我试过这段代码:

$(document).keyup((e)=>{
   var k = e.key
   if(e.keyCode == 8){
       console.log(e.keyCode)
       var d =$("#inp").val()
       $("#inp").remove(k+d)
   }
})

4 个答案:

答案 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;
&#13;
&#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个字符

&#13;
&#13;
$(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;
&#13;
&#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))
    }
})