2015-10-16 31 views
-1

我有一個帶有onClick事件和帶onKeyDown事件的文本框的按鈕。Javascript爲什麼onClick通過輸入鍵被調用

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

不知怎的,如果我按下輸入鍵,我不知道爲什麼按鈕被調用。

+1

我們會需要一個** **很多更多信息,與合作,能夠有效地回答這個問題。 –

+0

請發佈您的相關HTML。特別是,按鈕是一個提交按鈕?另外,你怎麼知道點擊按鈕被觸發,因爲你在這兩種情況下都調用了相同的函數? – Amadan

回答

3

當您在文本字段中按下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

這是我的*其他*理論,但考慮到這個問題缺乏關於表單的任何信息或者該按鈕是一個提交... –

相關問題