如何通过jQuery按下键盘按钮之一?

时间:2017-01-20 10:37:18

标签: javascript jquery html events keyboard

这是我的代码:



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

我试图做的就是使 esc 按钮与 backspace 按钮完全相同。因此,我希望在按下.myinput时删除<kbd>esc</kbd>值的一个字符。

我该怎么做?

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

3 个答案:

答案 0 :(得分:1)

这就是我要做的。我不认为这是最好的解决方案,而是一个有效的解决方案。

&#13;
&#13;
$("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);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="fname" class="myinput">
&#13;
&#13;
&#13;

编辑: 我修改了关于编辑的代码。 @ Alexandru-Ionut Mihai建议不适合你的原因是因为你只是在听keydown而在他的例子中他正在触发按键。

答案 1 :(得分:1)

这是解决方案:

您必须为trigger input举办$("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); } 活动。

val exitValue = Process(Seq("bash", "-c", command), dir) ! processLogger

答案 2 :(得分:1)

使用此代码,您可以按照自己的意愿使用。

$("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">