40

如何keypress停止keydown.

我有一个keydown处理程序,我需要停止keypress事件。

实际上我有一个表格和文本框。

当用户enter按键时,keydown触发事件并拥有处理程序。

表单提交将被触发keypress,所以我需要在我的处理程序中停止该keypress事件。keydown

4

7 回答 7

62
function onKeyDown(event) {   
  event.preventDefault();
}

http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event-preventDefault

或者

function onsubmit(event) {
  return false;
}

返回 false 以停止事件传播

于 2009-09-10T10:56:10.967 回答
4

在歌剧中,您必须使用keypress事件来防止键盘事件的默认操作。keydown用于防止所有浏览器中的默认操作,但不是在 Opera 中。

请参阅跨浏览器的键盘处理不一致的长列表。

于 2011-11-14T10:00:33.423 回答
4

在这里,我停止了 up/dn/left/right 键的事件冒泡:

    $(document).on("keydown", function(e) {
        if(e.keyCode >= 37 && e.keyCode <= 40) {
            e.stopImmediatePropagation();
            return;
        }
    });

我还从上面的答案中尝试了 e.preventDefaultevent.cancelBubble = true,但它们没有影响。

于 2017-11-03T12:53:18.050 回答
1

写,

    <script type="text/javascript">
      function keyDn(obj)
      {
        if(window["event"]["keyCode"]==48)  // key 0 will disabled keyPress event
         {
           obj["onkeypress"]=null;
          }
       }
      function keyPs(obj)
      {
        alert("Keypress");
      }

    </script>

  <form id="form1" runat="server">
    <div>
     <input type="text" onkeydown="keyDn(this)" onkeypress="keyPs(this)" />
    </div>
  </form>

在 keydown 处理程序中。

于 2009-09-10T10:56:34.367 回答
1

event.cancelBubble = true在事件处理程序中尝试。

于 2009-09-11T15:23:32.750 回答
0

我能够得到 event.preventDefault(); 在 Safari 和 Firefox 中工作,但不能在 IE7 或 IE8 中工作。

如果您只想禁用 enter 键,请确保您还检查了键值(Enter 为 13)并且仅为该键设置 event.preventDefault()。

任何人都可以为 IE7/8 或 Opera 提供答案吗?

于 2010-01-22T21:18:22.810 回答
0
<input type="text" name="date" id="date" class="form-control select-calender" placeholder="Choose Date" value="" required >

$(document).on('keypress','#date',function(e){
  e.preventDefault();
}); 
于 2021-01-13T09:06:33.263 回答