【问题标题】:How to avoid refreshing page with event onkeypress ENTER (keyCode == 13)?如何避免使用事件 onkeypress ENTER (keyCode == 13) 刷新页面?
【发布时间】:2017-05-12 16:42:57
【问题描述】:

我需要在按键 enter

后将表单输入发送到 js 函数

在回答 https://stackoverflow.com/a/905233/6827096 之后,但在按下 enter 后代码刷新页面下方。

#.html
<script src="chat.js'"></script>
<input  onkeypress="return sendChatMessage(event)">

#chat.js
function sendChatMessage(e) {
    if (e.keyCode == 13) {
        console.log("e.keyCode == 13");   //never reachable
        return false;
    }
    return true;
}

如何避免使用事件 onkeypress ENTER (keyCode == 13) 刷新页面?

函数sendChatMessage 在页面加载后在浏览器控制台中可见。

【问题讨论】:

  • 在表单中输入?我看不到按 Enter 会如何刷新页面。如果是,请考虑先停止表单提交。
  • 尝试 onKeyup 事件

标签: javascript


【解决方案1】:

如果您的输入在&lt;form&gt; 元素内,按Enter 将尝试提交表单。尝试在您的sendChatMessage() 中添加preventDefault()

function sendChatMessage(e) {
    if (e.keyCode == 13) {
        e.preventDefault();  // this should prevent default action
        console.log("e.keyCode == 13");   //never reachable
        return false;
    }
    return true;
}

【讨论】:

    【解决方案2】:

    尝试将e.preventDefault(); 添加到您的函数 sendChatMessage,它将阻止链接打开。您的代码将如下所示:

    function sendChatMessage(e) {
    
        if (e.keyCode == 13) {
    e.preventDefault();  // add  this line of code.
            console.log("e.keyCode == 13");   //never reachable
            return false;
        }
        return true;
    }
    

    【讨论】:

    • preventDefault() 是答案,(用户@errata 快了 4 分钟)。感谢您的回复。
    • 没关系。
    【解决方案3】:

    尝试同时使用e.which 和 e.keyCode:

    function sendChatMessage(e) {
        if (e.which == 13 || e.keyCode == 13) {
            e.preventDefault();
            console.log("e.keyCode == 13"); 
            return false;
        }
        return true;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 2014-02-15
      • 2020-04-24
      • 1970-01-01
      相关资源
      最近更新 更多