मैं एक उपयोगकर्ता एक 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>
जावास्क्रिप्ट:
करता है ' ऑनक्लिक 'काम? – Barmar
@ बामार - नहीं। मुझे लगता है कि केवल फ़ायरफ़ॉक्स 'विकल्प' तत्वों के लिए क्लिक ईवेंट का समर्थन करता है। हालांकि, मैं उल्लेख करूंगा कि मैंने आईई में इसका कोई परीक्षण नहीं किया है। –
जब भी 'ऑनफोकस' होता है, तो एक बदसूरत समाधान 'चयनित इंडेक्स = -1'' बनाना होगा, ताकि आप सुरक्षित रूप से 'विनिमय' सुन सकें। यह कीबोर्ड उपयोगकर्ताओं के लिए परेशान होगा, लेकिन यदि आप मानते हैं कि आपके क्लाइंट पहले से चुने गए कार्यों की परवाह नहीं करते हैं, तो यह एक परीक्षण के लायक हो सकता है। – Passerby