2013-04-11 23 views
5

Bu seçenek zaten seçilmiş olup olmadığına bakılmaksızın, bir kullanıcı bir HTML select kutusunda bir seçenek seçtiğinde bir JavaScript işlevi çalıştırmanın bir yolunu bulmaya çalışıyorum. Yani onchange sorunun dışında.Seçimde onblur/onchange alternatif

onblur kullanımıyla ilgili sorun, (başka bir deyişle, Chrome ve Safari'de, kullanıcı başka bir öğeyi tıklayana kadar etkinlik tetiklenmez) sorunudur. Bu, eğer kullanıcı seçime odaklanırsa can sıkıcı olur, sonra bir seçenek seçmeden tıklar, bu durumda olayın tetiklenmesini istemiyorum.

Seçeneklerin her birine onmouseup işleyicisini vererek biraz başarı elde edebildim, ancak bu yalnızca Firefox'ta çalıştığım kadarıyla çalışıyor. Herhangi bir fikir?

<select id="mySelect" onfocus="this.selectedIndex=0;" onchange="userDidSomething(event)"> 
    <option>Choose one:</option> 
    <option>Option 1</option> 
    <option>Option 2</option> 
</select> 

JavaScript: kimse bu cevaplamak için rahatsız beri

+0

mu ' onclick 'iş? – Barmar

+0

@Barmar - Hayır. Sadece Firefox'un 'option' elemanları için tıklama olaylarını desteklediğini tahmin ediyorum. Bununla birlikte, bunlardan hiçbirini IE'de test etmediğimi belirteceğim. –

+1

Çirkin bir çözüm, 'onfocus'un her zaman' selectedIndex = -1 'olmasını sağlamaktır, bu yüzden' onchange''i güvenle dinleyebilirsiniz. Bu klavye kullanıcıları için can sıkıcı olurdu, ancak müşterilerinizin daha önce seçtikleri şeyleri umursamadığı varsayılırsa, bu bir teste değer olabilir. – Passerby

cevap

2

, benim kod jenerik sürümünü göndeririz kullanmayı deneyin

function userDidSomething(event) { 
    // Your Code Here. 
} 
+0

Javascript açık değilse tarayıcının yüklenmesini durduracaktır. Şu şekilde değiştirebileceğinizi düşünürdüm: '' 'var s = document.getElementById (" mySelect "); s.attachEvent ("onchange", function() { // işlev burada }); '' –

1

var s = document.getElementById("mySelect"); 
s.attachEvent("onchange", function() { 
    // function here 
}); 
+3

O, 'değiş tokuşu' istemediğini söyledi –

+0

Özür dilerim. Bir olay dinleyicisi bir olasılık değil mi? Muhtemelen sorun eski bir Internet Explorer ise değil. – jonlastthelast