2010-02-09 15 views
6

मेरे पास एक टेबल पंक्ति है जिसमें एक टेक्स्टबॉक्स है और इसमें एक ऑनक्लिक है जो एक जावास्क्रिप्ट कैलेंडर प्रदर्शित करता है ... मैं टेक्स्टबॉक्स के साथ तालिका में पंक्तियां जोड़ रहा हूं, लेकिन मुझे नहीं पता कि जावास्क्रिप्ट जेनरेट किए गए टेक्स्टबॉक्स पर ऑनक्लिक ईवेंट कैसे संलग्न करें ...जावास्क्रिप्ट जेनरेट किए गए टेक्स्टबॉक्स के लिए ऑनक्लिक ईवेंट को कैसे संलग्न करें?

<input class="date_size_enquiry" type="text" autocomplete="off" 
onclick="displayDatePicker('attendanceDateadd1');" size="21" readonly="readonly"  
maxlength="11" size="11" name="attendanceDateadd1" id="attendanceDateadd1" 
value="" onblur="per_date()" onchange="fnloadHoliday(this.value);"> 

और मेरे जावास्क्रिप्ट एक पाठ बॉक्स उत्पन्न करता है,

var cell2 = row.insertCell(1); 
    cell2.setAttribute('align','center') 
    var el = document.createElement('input'); 
    el.className = "date_size_enquiry"; 
    el.type = 'text'; 
    el.name = 'attendanceDateadd' + iteration; 
    el.id = 'attendanceDateadd' + iteration; 
    el.onClick = //How to call the function displayDatePicker('attendanceDateadd1'); 
    e1.onblur=?? 
    e1.onchange=?? 
    cell2.appendChild(el); 
+1

मुझे विश्वास है कि घटनाओं को जोड़ना द्विपक्षीय रूप से क्रॉस ब्राउज़र नहीं है, इसलिए आपको विभिन्न ब्राउज़रों के लिए अलग-अलग कोड लिखने की आवश्यकता हो सकती है। मैं उस उद्देश्य के लिए JQuery जैसे जेएस लाइब्र्रे का उपयोग करने का सुझाव देता हूं। JQuery के साथ यह उतना आसान है: '$ ('# elementId')। क्लिक करें (फ़ंक्शन() {/ * जो भी आप यहां चाहते हैं * /});' –

+1

@eyazici: डीओएम मैनिपुलेशन रणनीति ओपी का उपयोग सुरक्षित है 'setAttribute()' के अपवाद के साथ। – Asaph

उत्तर

14
इस तरह

:

var el = document.createElement('input'); 
... 
el.onclick = function() { 
    displayDatePicker('attendanceDateadd1'); 
}; 

Btw: मामले sensiti से सावधान रहें डोम में vity। यह "onclick" है, "onClick" नहीं।

+0

@ Asaph ने यह काम नहीं किया 'el.onClick = function() {alert (el.id);}; ' –

+1

@chandru_cp:" onclick "में" c "को कैपिटल न करें। यह एक कम मामला "सी" है। मेरे उत्तर की आखिरी पंक्ति देखें। – Asaph

+0

@chandru_cp: आपने इस उत्तर को अस्वीकार क्यों किया? – Asaph

2
el.onclick = function(){ 
    displayDatePicker(this.id); 
}; 
3
अपने उदाहरण ले रहा है

, मुझे लगता है कि आप ऐसा करना चाहते हैं:

el.onclick = function() { displayDatePicker(el.id); }; 

केवल चाल का एहसास करने तुम क्यों function() { ... } कोड में अपने displayDatePicker कॉल रैप करने के लिए की जरूरत है। असल में, आपको onclick प्रॉपर्टी पर फ़ंक्शन असाइन करने की आवश्यकता है, हालांकि ऐसा करने के लिए आप केवल el.onclick = displayDatePicker(el.id) नहीं कर सकते हैं क्योंकि यह displayDatePicker फ़ंक्शन निष्पादित करने के लिए जावास्क्रिप्ट को बताएगा और परिणाम को onclick हैंडलर को फ़ंक्शन कॉल असाइन करने के बजाय असाइन करें अपने आप। तो इसके आस-पास पहुंचने के लिए आप एक अज्ञात फ़ंक्शन बनाते हैं जो बदले में आपके displayDatePicker पर कॉल करता है। उम्मीद है की वो मदद करदे।

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