2016-03-23 85 views
0

我有一個功能,我需要開始點擊或按Enter鍵。 所以我需要的東西,如:ajax,javascript - 兩個事件啓動功能

<BUTTON onclick="searchProduct()" or onkeypress="searchProduct()">Hledat</BUTTON> 

但僅限於按Enter鍵。不在任何鍵上。

這是可能的Ajax或普通的JavaScript?

OK,沒想到它是如此的複雜,所以我給你整我的代碼,因爲你的答案是不是我的整個代碼的工作...

<!DOCTYPE html> 
<HTML> 
    <HEAD> 
     <META charset="UTF-8" /> 
     <TITLE>Searchin engine</TITLE> 
    </HEAD> 
    <BODY> 
     <SCRIPT src="js_search.js"></SCRIPT> 
     <FORM> 
      <INPUT type="text" id="word" size="40" /> 
     </FORM> 
     <BUTTON onclick="searchProduct(document.getElementById('word').value)">Hledat</BUTTON> 
     <P id="display"></P> 

    </BODY> 
</HTML> 
+0

[KEYDOWN + KEYUP爲特定鍵事件]的可能的複製(http://stackoverflow.com/questions/16345870/keydown-keyup-events-for-specific-keys) – Marie

+0

大多數瀏覽器可能會執行onclick當您選項卡並輸入 – jayms

+1

按鈕沒有鍵事件 – Rajesh

回答

2

只需添加事件監聽器您的JavaScript(你上面的searchProduct()功能,例如)

document.getElementById('button').addEventListener('click', function(){ 
 
    searchProduct(document.getElementById('word').value); 
 
}) 
 

 
document.getElementById('button').addEventListener('keydown', function(e){ 
 
    if(e.keyCode == 13) searchProduct(document.getElementById('word').value); // the keyCode 13 is equivalent to the enter key 
 
}) 
 

 
function searchProduct(val) { 
 
    alert(val); 
 
}
<button id="button">Hledat</button> 
 
<input id="word" value="foo"/>

希望這有助於!

+0

嗨,它看起來不錯,但如果我需要使用變量如何做到這一點? –

+0

以什麼方式處理變量? –

+0

我需要從ID爲「word」的INPUT中獲取值,並將其置於函數searchProduct()中。但如果在元素按鈕中沒有事件,我就無法做到這一點。 –

0

你可以這樣做:在功能

<BUTTON onclick="searchProduct(event)" onkeypress="searchProduct(event)">Hledat</BUTTON> 

現在:

searchProduct(e){ 

    if(e.type === 'keypress' && e.keyCode !== 13){ 
     return; 
    }  

    // put the code for search here. 

} 
0

在功能,你可以通過這樣的活動「to your button

var btn_search_product = document.getElementById("btn_search_product"); 
btn_search_product.addEventListener("keydown", function (e) { 
    if (e.keyCode === 13) { 
     searchProduct(e); 
    } 
}); 

實際上我用的事件摘要庫https://github.com/petermichaux/evento

它這將是:

evento.add(btn_search_product, "keydown", function (e) { 
     if (e.keyCode === 13) { 
      searchProduct(e); 
     } 
}); 
0

集ID =「btn_search_product

<BUTTON onclick="searchProduct()" onkeypress="searchProductKeyPress(event)">Hledat</BUTTON> 

function searchProductKeyPress(event) { 
    if (event.which == 13 || event.keyCode == 13) { 
     searchProduct(); 
     return false; 
    } 
    return true; 
} 
1

理想情況下,你應該有元素和enter個別事件,您可以調用特定的功能,也可以觸發元素單擊。

如果您希望輸入和按鈕單擊工作相同,我會建議觸發點擊事件。這將確保所有UI狀態都已更新,並且所有處理都已完成。原因是,我們可以將多個處理程序添加到按鈕以進行不同的處理,並且調用函數可能不會調用其他代碼。

function keyPress(e) { 
 
    if (e.keyCode == 13) { 
 
    document.getElementById("btn").click(); 
 
    } 
 
} 
 

 
function notify() { 
 
    console.log("Processing...") 
 
}
<input type="text" id="txt" onkeyup="keyPress(event)"> 
 
<button id="btn" onclick="notify(event)">Notify</button>