2010-10-21 6 views
6

में काम नहीं कर रहे चयन में क्लिक करें जावास्क्रिप्ट के लिए थोड़ा नया है। इस प्रश्न का एक सा भी मूर्खतापूर्ण ध्वनि सकता है, लेकिन मैं यह पता लगा क्यों निम्नलिखित IE में काम नहीं करता नहीं पा रहा हूँ और फ़ायरफ़ॉक्स में काम करता है ..आईई

<select multiple="multiple"> 
<option value="tx" onClick="alert('tx');">Texas</option> 
<option value="ak" onClick="alert('ak');">Alaska</option> 
<option value="ca" onClick="alert('ca');">California</option> 
<option value="ws" onClick="alert('ws');">Washington</option> 
<option value="tn" onClick="alert('tn');">Tennessee</option> 
</select> 

चेतावनी नहीं आता आईई में (मैं आईई 8 का उपयोग कर रहा हूँ)। लेकिन यह फ़ायरफ़ॉक्स में काम करता है !!!!!

+0

इसका jQuery के साथ कुछ लेना देना नहीं है। – SLaks

+0

[jquery में बच्चे के नियंत्रण में क्लिक करें) को संभावित डुप्लिकेट करें [http://stackoverflow.com/questions/3970564/assign-click-to-a-child-control-in-jquery) – Fermin

+0

मुझे खेद है मैंने सवाल में गलत शीर्षक डाला। यह एक साधारण एचटीएमएल चुनिंदा तत्व और जावास्क्रिप्ट क्लिक इवेंट को आमंत्रित करने के लिए है जो – chuckyCheese

उत्तर

6

According to w3schools, विकल्प टैग ऑनक्लिक विशेषता का समर्थन करता है। मैंने बैरल आईई 6 के नीचे से कोशिश की और यह मामला प्रतीत नहीं होता है।

इस होगा करने के लिए सबसे आसान तरीका:

<select multiple="multiple" onchange="alert(this.value);"> 
<option value="tx">Texas</option> 
<option value="ak">Alaska</option> 
<option value="ca">California</option> 
<option value="ws">Washington</option> 
<option value="tn">Tennessee</option> 
</select> 

यह ठीक नहीं है क्या आप के बाद कर रहे हैं, लेकिन बहुत करीब होना चाहिए।

संपादन

यह सिर्फ अधिक काम ले जाएगा: इस बिंदु पर

<select multiple="multiple" onchange=" 
    switch (this.value){ 
     case 'tx': funcOne(); break; 
     case 'ak': funcTwo(); break; 
     etc... 
    } 
"> 
<option value="tx">Texas</option> 
<option value="ak">Alaska</option> 
<option value="ca">California</option> 
<option value="ws">Washington</option> 
<option value="tn">Tennessee</option> 
</select> 

यह html में एम्बेड करने के बजाय एक js फ़ाइल में एक समारोह में onchange रैप करने के लिए उपयुक्त होगा ।

+0

धन्यवाद मार्क, यह बेहतर दिखता है। लेकिन अगर मुझे अलग-अलग विकल्पों के लिए अलग-अलग कार्यों को आवंटित करने की आवश्यकता है तो क्या होगा? मैं यह काम सही नहीं कर सकता? – chuckyCheese

+0

@ रॉकी, उपरोक्त संपादन देखें। – Mark

+0

बहुत बहुत धन्यवाद मार्क। मुझे लगता है कि यह करना चाहिए – chuckyCheese

2

ऐसा इसलिए है क्योंकि जब आप किसी चयनित क्षेत्र (अनुमान लगाने) में कोई नया विकल्प चुनते हैं तो IE एक क्लिक ईवेंट पंजीकृत नहीं करता है। इसके बजाय, आप onBlur घटना (और इसके बजाय अपने जावास्क्रिप्ट में कोड डाल) का उपयोग करना चाहिए ताकि (jQuery कल्पना करते हुए) की तरह:

<script type='text/javascript'> 
    $(document).ready(function(){ 
    $('select#state').bind('blur', function(){ 
     alert(this.val()); 
    }); 
    }); 
</script> 

<select id='state' multiple="multiple"> 
    <option value="tx">Texas</option> 
    <option value="ak">Alaska</option> 
    <option value="ca">California</option> 
    <option value="ws">Washington</option> 
    <option value="tn">Tennessee</option> 
</select> 
+0

में काम नहीं करता है, मुझे खेद है कि मैंने गलत सवाल दर्ज किया था। मेरे पास कोई jquery बिल्कुल नहीं है। सरल जावास्क्रिप्ट और एचटीएमएल का चयन करें .. क्या यह आईई में काम करने का कोई तरीका है? – chuckyCheese

+0

समझा गया, रोबस्टो का उत्तर आपके द्वारा पोस्ट किए गए कोड के लिए सबसे प्रत्यक्ष, मान्य, सीधे जावास्क्रिप्ट समाधान है। –

5

मैं onchange घटना का प्रयोग करेंगे:

<select multiple="multiple" onchange="alert(this.options[this.selectedIndex].value)"> 
<option value="tx">Texas</option> 
<option value="ak">Alaska</option> 
<option value="ca">California</option> 
<option value="ws">Washington</option> 
<option value="tn">Tennessee</option> 
</select> 

हालांकि डैनियल मेंडल के समाधान पूरी तरह से मान्य है।

+0

यह बढ़िया है जब मेरे पास एक ही समारोह कहा जाता है। लेकिन अगर मुझे अलग-अलग विकल्पों के लिए अलग-अलग कार्यों को आवंटित करने की आवश्यकता है तो क्या होगा? – chuckyCheese

+0

यही वह है जो चयनित इंडेक्स आपको बताएगा। आप उस से वास्तविक विकल्प तत्व प्राप्त कर सकते हैं और इसके साथ कुछ अलग * उसी समारोह में * कर सकते हैं। यह एक विशेषता है, कोई कमी नहीं। सादगी के लिए (और आपके नेतृत्व के बाद) मैंने पूरे हैंडलर को ईवेंट श्रोता विशेषता में रखा है, लेकिन वास्तव में आप बस "यह" बाहरी फ़ंक्शन में पास करेंगे। या jQuery का प्रयोग करें और इसे एक समारोह शाब्दिक असाइन करें। – Robusto

+0

परिवर्तन तब तक नहीं चलता जब तक कि चयन फोकस न हो जाए, कुछ ब्राउज़र इसे आग लगते हैं जैसे आप अप/डाउन तीरों के साथ चुनते हैं –