2013-04-11 10 views
5

मैं एक उपयोगकर्ता एक HTML select बॉक्स में एक विकल्प का चयन करता है जब, चाहे इस विकल्प को पहले से ही चुना गया था की परवाह किए बिना एक JavaScript फ़ंक्शन चलाने का एक तरीका खोजने की कोशिश कर रहा हूँ। तो onchange सवाल से बाहर है।वैकल्पिक करने के लिए onBlur/onchange में चुनिंदा

onblur का उपयोग करने में समस्या यह है कि (क्रोम और सफारी में, कम से कम) ईवेंट ट्रिगर नहीं होता है जब तक कि उपयोगकर्ता किसी अन्य तत्व पर क्लिक नहीं करता है। यह उपयोगकर्ता परेशान होने पर भी ध्यान केंद्रित कर सकता है, फिर विकल्प चुनने के बिना दूर क्लिक करता है, इस मामले में मैं नहीं चाहता कि ईवेंट ट्रिगर हो।

मैं प्रत्येक विकल्प को onmouseup हैंडलर देकर कुछ सफलता प्राप्त करने में सक्षम था, लेकिन यह केवल फ़ायरफ़ॉक्स में काम करता है, जहां तक ​​मैं कह सकता हूं। कोई विचार?

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

जावास्क्रिप्ट:

+0

करता है ' ऑनक्लिक 'काम? – Barmar

+0

@ बामार - नहीं। मुझे लगता है कि केवल फ़ायरफ़ॉक्स 'विकल्प' तत्वों के लिए क्लिक ईवेंट का समर्थन करता है। हालांकि, मैं उल्लेख करूंगा कि मैंने आईई में इसका कोई परीक्षण नहीं किया है। –

+1

जब भी 'ऑनफोकस' होता है, तो एक बदसूरत समाधान 'चयनित इंडेक्स = -1'' बनाना होगा, ताकि आप सुरक्षित रूप से 'विनिमय' सुन सकें। यह कीबोर्ड उपयोगकर्ताओं के लिए परेशान होगा, लेकिन यदि आप मानते हैं कि आपके क्लाइंट पहले से चुने गए कार्यों की परवाह नहीं करते हैं, तो यह एक परीक्षण के लायक हो सकता है। – Passerby

उत्तर

2

के बाद से कोई भी इस जवाब देने के लिए परेशान है, मैं अपने कोड का एक जेनेरिक वर्जन पोस्ट करेंगे

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

यह जावास्क्रिप्ट चालू नहीं होने पर ब्राउज़र को लोड होने से रोक देगा। मुझे लगता है कि आप इस तरह onChange इस्तेमाल कर सकते हैं लगता होगा: '' 'वर एस = document.getElementById (" mySelect "); s.attachEvent ("बदले", फ़ंक्शन() { // यहां फ़ंक्शन }); '' –

1

उपयोग करने का प्रयास

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

उन्होंने कहा, वह नहीं चाहते हैं 'बदले' –

+0

मेरी माफ़ी। क्या एक ईवेंट श्रोता एक संभावना नहीं है? शायद नहीं करता है, तो मुसीबत एक पुराने इंटरनेट एक्सप्लोरर है। – jonlastthelast

संबंधित मुद्दे