2014-07-21 6 views
28

तो मैं करने के लिए गतिशील चयन सूची ही पॉप्युलेट शुरू करने के लिए एक भी चयन से, कोशिश कर रहा हूँaddEventListener, "परिवर्तन" और विकल्प चयन

addEventListener("select", addActivityItem, false); 

समस्या यह है कि जब आपके पास एक आइटम होता है तो विभिन्न ईवेंट नहीं होते हैं: "परिवर्तन" नहीं, क्योंकि जब आप उस आइटम का चयन करते हैं तो पाठ अलग नहीं होता है; मोटे तौर पर इसी कारण के लिए "चयन करें" (जैसा कि मेरे पास है) नहीं, क्योंकि मैं वास्तव में कुछ भी नहीं चुन रहा हूं b/c केवल एक आइटम है। घटना क्या है जिसे यहां निकाल दिया जाना चाहिए? घटना को आग लगाने के लिए मेरी विकल्प सूची में एक खाली आइटम सूचीबद्ध करने के लिए मूर्खतापूर्ण लगता है, इसलिए मुझे उम्मीद है कि एक और समाधान होगा। या यह सबसे अच्छा समाधान है?

+0

ऐसा लगता है कि आप इसे एक अलग ऑनक्लिक हैंडलर को आग लगाना चाहते हैं जो वस्तुओं की संख्या की जांच करता है, और यदि केवल एक है, तो addActivityItem को कॉल करें। –

+0

मुझे लगता है कि मैं सिर्फ यह पता लगाने की कोशिश कर रहा हूं कि कौन सा ईवेंट (यदि कोई है) निकाल दिया जा रहा है जब मैं चुनिंदा आइटम पर केवल एक आइटम के साथ क्लिक करता हूं, क्योंकि अभी, जो आग लगाना चाहिए। – NovaDev

+0

यदि आप क्लिक करते हैं, तो एक क्लिक ईवेंट निकाल दिया जाएगा। यदि आप एक चुनिंदा घटना को आग लगाना चाहते हैं तो आप स्पष्ट रूप से दस्तावेज़.getElementById ('गतिविधि चयनकर्ता') को आग लगा सकते हैं।() – Shovan

उत्तर

23

आपको जिस प्रकार के व्यवहार का वर्णन किया गया है उसे संभालने के लिए आपको एक क्लिक ईवेंट की आवश्यकता है।

सबसे पहले, यह देखने के लिए जांचें कि एक से अधिक विकल्प पहले से मौजूद हैं या नहीं।

यदि नहीं, तो अपने addActivityItem फ़ंक्शन पर कॉल करें।

निम्नलिखित स्निपेट को दर्शाता है कि आप कैसे प्राप्त हो सकता है:

var activities = document.getElementById("activitySelector"); 

activities.addEventListener("click", function() { 
    var options = activities.querySelectorAll("option"); 
    var count = options.length; 
    if(typeof(count) === "undefined" || count < 2) 
    { 
     addActivityItem(); 
    } 
}); 

activities.addEventListener("change", function() { 
    if(activities.value == "addNew") 
    { 
     addActivityItem(); 
    } 
}); 

function addActivityItem() { 
    // ... Code to add item here 
} 

एक लाइव डेमो here on JSfiddle है।

+0

मुझे एहसास हुआ कि त्रुटि मेरे कोड में कहीं और थी, और क्लिक ईवेंट वह है जिसे मैं चाहता हूं। यह वही है जो मैंने किया था, और मेरी सोच के साथ था, इसलिए पुष्टि अच्छी है। धन्यवाद! – NovaDev

4

समस्या यह है कि आपने का उपयोग विकल्प का चयन किया है, यह वह जगह है जहां आप गलत थे। का चयन करें कि एक टेक्स्टबॉक्स या टेक्स्ट एरिया का ध्यान केंद्रित है। आपको क्या करना है का उपयोग करना है। "जब कोई चुनिंदा तत्व में कोई नई पसंद की जाती है तो आग लगती है", टेक्स्टबॉक्स या टेक्स्ट एरिया से दूर जाने पर भी धुंध की तरह उपयोग किया जाता है।

function start(){ 
     document.getElementById("activitySelector").addEventListener("change", addActivityItem, false); 
     } 

function addActivityItem(){ 
     //option is selected 
     alert("yeah"); 
} 

window.addEventListener("load", start, false); 
संबंधित मुद्दे