2016-03-23 10 views
0

Tek bir işlevim var ve tıklamanıza veya Enter tuşuna basmaya başladım.ajax, javascript - iki olaylı işlev başlatma

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

Ama sadece Enter tuşuna basın üzerinde: Yani böyle bir şey gerekiyordu. Herhangi bir anahtarda değil.

Ajax veya düz javascript için bu mümkün mü?

<!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

[belirli tuşlar için keydown + keyUp olaylar] Olası yinelenen (http://stackoverflow.com/questions/16345870/keydown-keyup-events-for-specific-keys) – Marie

+0

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>
Çoğu tarayıcı, – jayms

+1

sekmesine girdiğinizde muhtemelen onclick'i gerçekleştirir. Düğme anahtar olaylarınız yok – Rajesh

cevap

2

Hemen olay dinleyicileri eklemek ...

Tamam, o kadar karmaşık olduğunu beklemiyorduk, bu yüzden cevaplar benim bütün kod işe yaramayan, çünkü sen benim kod bütün vermek (örneğin sizin searchProduct() fonksiyonu yukarıda) sizin javascript bu yardımcı olur

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"/>

Umut!

+0

düğmesi yerine Enter'a tepki vermesini sağlayın. güzel görünüyor, ama değişkenle çalışmam gerekirse bunu nasıl yapabilirim? –

+0

Değişkenlerle hangi şekilde çalışın? –

+0

"word" kimliğine sahip INPUT değerini almalı ve onu searchProduct() işlevine getirmeliyim. Ama eğer eleman DÜĞMESİNDE bir olay değilse, bunu yapamam. –

0

Sen yapabilirsiniz:

searchProduct(e){ 

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

    // put the code for search here. 

} 
0

böyle olayı geçebilir "Düğmenizde

Aslında onunla evento kütüphanesini https://github.com/petermichaux/evento

kullanmak

olurdu: İdeal

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

set id = "btn_search_product: işlevinde Şimdi

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

:

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

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

, sen elemanı ve enter bireysel olayları olmalıdır, belirli işlevini çağırmak isterseniz de eleman en tetikleyebilir tıklayın.

Girmek isterseniz, aynı tuşa basın ve tıklayın, tıklama olayını tetiklemenizi öneririm. Bu, tüm UI durumlarının güncellendiğinden ve tüm işlemlerin yapıldığından emin olacaktır. Bunun nedeni, farklı işlemler için bir düğmeye birden fazla işleyici ekleyebilir ve arama işlevleri başka kodları aramayabilir.