繁体   English   中英

jQuery如何按键盘按钮之一?

[英]How can I press one of keyboard's button by jQuery?

这是我的代码:

 $("input").on({ keydown: function(ev) { if (ev.which === 27){ // esc button backspace_emolator(); } else if (ev.which === 8){ // backspace button console.log('backspace button pressed'); } } }); function backspace_emolator(){ // remove one character exactly how backspace button does } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" name="fname" class="myinput"> 

我要做的就是使esc按钮与Backspace按钮完全相同。 所以我想在按下<kbd>esc</kbd>时删除.myinput值的一个字符。

我怎样才能做到这一点?


注意:我不想只删除.myinput值的一个字符。 我想按退格键。 因此,当我按下esc按钮时,应该在控制台中显示backspace button pressed按钮。

这就是我要做的。 我不认为这是最佳解决方案,而是可行的解决方案。

 $("input").on({ keydown: function(ev) { if (ev.which === 27){ // esc button backspace_emolator(this); } else if (ev.which === 8){ // backspace button console.log('backspace button pressed'); } } }); function backspace_emolator(el){ // remove one character exactly how backspace button does var val = el.value el.value = val.substring(0, val.length - 1); // trigger event var e = jQuery.Event("keydown"); e.which = 8; // # Backspace keyCode $(el).trigger(e); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" name="fname" class="myinput"> 

编辑:我已经根据您的修改修改了我的代码。 @ Alexandru-Ionut Mihai的建议对您不起作用的原因是,您只在听按键按下,而在他的示例中,他正在触发按键。

这是解决方案:

您必须为input trigger一个事件。

$("input").on({
    keydown: function(ev) {
        if (ev.which === 27){   // esc button
          backspace_emolator();
        }
    }
});

function backspace_emolator(){
  var e = jQuery.Event("keydown", { keyCode: 8 }); // you can specify your desired key code 
  $('input').trigger(e);
}

使用此代码,即可按需使用。

 $("input").on({ keydown: function(ev) { if (ev.which === 27){ // esc button backspace_emolator(ev); } if (ev.which === 8){ // backspace button console.log('backspace button pressed'); } } }); function backspace_emolator(ev){ // remove one character exactly how backspace button does var inputString = $('#inputID').val(); var shortenedString = inputString.substr(0,(inputString.length -1)); $('#inputID').val(shortenedString); console.log("Backspace button Pressed"+" "+inputString); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input id="inputID" type="text" name="fname" class="myinput"> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM