【问题标题】:Detect "Entry key" press for custom function检测自定义功能的“输入键”按下
【发布时间】:2016-09-11 14:29:15
【问题描述】:

我想检测用户何时使用 Entry。我想要这个,因为我想要自定义按键所做的操作。关键是在我的桌子上添加一个新行。可以加我吗?

谢谢。

编辑

此解决方案不起作用。我尝试了所有答案和任何解决方案......:

<script type="text/javascript">
        function stopEntryKey(evt) {
            var evt = (evt) ? evt : ((event) ? event : null);
            var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
                if ((evt.keyCode == 13) && (node.type == "text")) { 
                    return false;
                    $("tbody").html("<tr><td>Item1-col1</td><td>Item1-col2</td></tr>"); // Ajoute une ligne
                }
        }
        document.onkeypress = stopEnterKey;
    </script>

编辑 2:

$(document).ready(function() {
$(window).keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });
});

此代码有效。在这里找到:Prevent users from submitting a form by hitting Enter

现在,当用户按下 Entry 键时,我会搜索添加一行。谁知道怎么做?

【问题讨论】:

标签: jquery html row keypress


【解决方案1】:

您需要添加按键事件侦听器来检测按键。您可以使用 javascript .addEventListener() 或 jquery .keydown() 添加 keydown 事件监听器。然后你应该检查是否按下了 Enter,运行你的目标代码。

// Javascript
document.addEventListener("keydown", function(){
    if (event.keyCode == '13') {
        alert();
    }
});
// Javascript shortcut
document.onkeydown = function() {   
    if (event.keyCode == "13") {
        alert();
    }
} 
// JQuery
$(document).keydown(function() {   
    if (event.keyCode == '13') {
        alert();
    }
}); 

window.onkeydown = function() {   
    if (event.keyCode == '13') {
      alert("Enter key pressed");
    }
} 

【讨论】:

  • 那个“Javascript 快捷方式”很糟糕,不应该使用。只要你有多个,它就会中断,因为它会覆盖前一个。
  • @ThiefMaster 我提供了三种工作方式。这并不意味着您应该同时使用所有三种方式。
  • 你提供了三种方法,其中一种很糟糕,最好不要推荐给可能不知道缺点的人。
  • @ThiefMaster 我无法理解你的意思。为什么onkeydown很糟糕
  • 想象你有 foo.js 使用 document.onkeydown = ...; 并且 bar.js 也使用它。现在无论最后执行什么都将替换另一个
【解决方案2】:

假设 HTML 如下

<table>
     <thead>
        <tr>
          <th>Col1</th>
          <th>Col2</th>
        </tr>
     </thead>

     <tbody>
     </tbody>
</table> 

现在是 JS:

$(document).keydown(function() {   
   if (event.keyCode == '13') {
       $("tbody").html("<tr><td>Item1-col1</td><td>Item1-col2</td></tr>";  //this 'll add row in the table
    }
}); 

【讨论】:

  • 谢谢@KOUSIK。但是没有用。输入键发送我的表格。那请问怎么改呢?
  • 好的,所以您在该页面中有一个表单,当您按 Enter 时,表单正在提交。这样对吗?如果是,请告诉我您什么时候想在表格中追加一行;什么时候提交表单或其他时间?
  • 我想自定义 Entry 键的事件。默认情况下,Entry 键会发送我的表单,而我不希望这样做。我只想在用户使用 Entry 键时添加一行。
  • 好的,试一试:。看一下类型。现在检查。
  • 不明白为什么要加按钮?
【解决方案3】:

试试这个:

document.onkeydown = function(e) {   
  //something code
  //for something specific key:
  if (e.keyCode == 'someting_code_key') {
    // action
  }
} 

key code list

【讨论】:

  • 这是错误的,发帖前请测试-function(e) &lt;-- note the "e"
  • 我忘了e,现在可以了:)
  • 不要分配document.onwhatever;如果您有多个此类任务,它可能会中断,因为它将取代以前的任务。请改用addEventListener
猜你喜欢
  • 2017-02-14
  • 2016-01-04
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
  • 2021-05-15
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多