【问题标题】:Alert when any key is pressed按下任意键时发出警报
【发布时间】:2026-01-26 02:30:01
【问题描述】:

当用户在文本框中按下删除、退格和空格时,我正在使用下面的 javascript 来提醒。如果在文本框中按下任何键,我需要发出警报,并且可能我可以在脚本中为每个键提及键码。但是谁能告诉我是否有任何其他方式可以在按下任何键时发出警报?

 function doCheck() {
        var keyCode = (event.which) ? event.which : event.keyCode;
        if ((keyCode == 8) || (keyCode == 46) || (keyCode == 32))
            alert('The column is readonly and is non-editable');
        event.returnValue = false;
    } 

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    你能试试这个吗,事件处理程序onkeypress

    onkeypress="KeyPressCheck(event)"
    

    Javascript:

    function KeyPressCheck(event){
       console.log('pressed::'+ event.keyCode);
    }
    

    参考:https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onkeypress

    【讨论】:

      【解决方案2】:

      使用 jQuery 附加事件,否则您必须手动将 on 处理程序属性添加到 每个 元素。试试这个:

      $('.texboxes').keypress(function(e) {
          if ((e.which == 8) || (e.which == 46) || (e.which == 32)) {
              alert('The column is readonly and is non-editable');
              event.returnValue = false;
          }
      });
      

      【讨论】:

        【解决方案3】:
         function doCheck(event)
        

        并在你使用这个函数的地方传递事件

        例如。

         onclick="doCheck(event)"
        

        【讨论】:

        • onclick="doCheck(event)" (缺少 "c") ;)
        • 这是如何被赞成的? OP想要捕获按键,这是使用(拼写错误的)点击处理程序......?
        【解决方案4】:

        您可以使用 JQuery Keyup Event handler 来查找按下了哪个键。

        $( "#SelectorId" ).keyup(function( event ) {
            //check for which key is pressed.
            if ((event.which== 8) || (event.which== 46) || (event.which== 32)){
               alert("Some message");  
               event.preventDefault();
            }
        });  
        

        为什么要使用keyup事件:

        keydown 和 keyup 提供一个代码,指示按下了哪个键,而 keypress 指示输入了哪个字符。例如,小写的“a”将被 keydown 和 keyup 报告为 65,但被 keypress 报告为 97。所有事件都将大写“A”报告为 65。由于这种区别,当捕捉箭头键等特殊击键时,.keydown() 或 .keyup() 是更好的选择。

        【讨论】: