Javascript为什么onClick通过输入键被调用

问题描述:

我有一个带有onClick事件和带onKeyDown事件的文本框的按钮。Javascript为什么onClick通过输入键被调用

Button: onclick="myFunc(3)" 
Textfield: onKeyDown="if(event.keyCode==13) myFunc(3);" 

不知怎的,如果我按下输入键,我不知道为什么按钮被调用。

+1

我们会需要一个** **很多更多信息,与合作,能够有效地回答这个问题。 –

+0

请发布您的相关HTML。特别是,按钮是一个提交按钮?另外,你怎么知道点击按钮被触发,因为你在这两种情况下都调用了相同的函数? – Amadan

当您在文本字段中按下Enter键时,会触发表单提交,并且浏览器会模拟单击表单的第一个提交按钮。

您可以通过防止按键(不是keydown)事件的默认操作来避免这种情况。

var s = document.querySelector('[type=submit]'); 
 
var t = document.querySelector('[type=text]'); 
 
var f = document.querySelector('form'); 
 

 
t.addEventListener('keydown', function(event) { 
 
    if (event.keyCode == 13) { 
 
    alert("enter pressed") 
 
    } 
 
}); 
 

 
t.addEventListener('keypress', function(event) { 
 
    if (event.keyCode == 13) { 
 
    event.preventDefault(); 
 
    } 
 
});
<form action="/"> 
 
    <input type="text"> 
 
    <input type="submit"> 
 
</form>

+0

这是我的*其他*理论,但考虑到这个问题缺乏关于表单的任何信息或者该按钮是一个提交... –