2010-02-09 38 views
6

Tôi có một hàng trong bảng có chứa một hộp văn bản và nó có một onclick hiển thị lịch JavaScript ... Tôi đang thêm hàng vào bảng với hộp văn bản, nhưng tôi không biết cách đính kèm sự kiện onclick vào hộp văn bản được tạo JavaScript ...Làm cách nào để đính kèm sự kiện OnClick cho hộp văn bản được tạo javascript?

<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);"> 

Và tạo JavaScript của tôi một textbox,

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

Tôi tin rằng sự kiện gắn liền với thực tế không phải là trình duyệt chéo, vì vậy bạn có thể cần viết mã khác nhau cho các trình duyệt khác nhau. Tôi đề nghị sử dụng JS libray như JQuery cho mục đích đó. Với JQuery nó đơn giản như thế này: '$ ('# elementId'). Click (function() {/ * Làm những gì bạn muốn ở đây * /});' –

+1

@eyazici: Chiến lược thao tác DOM mà OP đang sử dụng là an toàn ngoại trừ 'setAttribute()'. – Asaph

Trả lời

14

như thế này:

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

BTW: Hãy cẩn thận với trường hợp sensiti vity trong DOM. Đó là "onclick", không phải "onClick".

+0

@ Asaph nó không hoạt động 'el.onClick = function() {alert (el.id);};' –

+1

@chandru_cp: Không viết hoa chữ "c" trong "onclick". Đó là chữ thường "c". Xem dòng cuối cùng của câu trả lời của tôi. – Asaph

+0

@chandru_cp: Tại sao bạn không chấp nhận câu trả lời này? – Asaph

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

Lấy ví dụ của bạn, tôi nghĩ rằng bạn muốn làm điều này:

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

Bí quyết duy nhất là để nhận ra lý do tại sao bạn cần phải quấn displayDatePicker cuộc gọi của bạn trong mã function() { ... }. Về cơ bản, bạn cần gán một hàm cho thuộc tính onclick, tuy nhiên để thực hiện điều này bạn không thể chỉ làm el.onclick = displayDatePicker(el.id) vì điều này sẽ yêu cầu javascript thực thi hàm displayDatePicker và gán kết quả cho trình xử lý onclick thay vì chỉ định hàm gọi chinh no. Vì vậy, để giải quyết vấn đề này, bạn tạo một chức năng ẩn danh để gọi số displayDatePicker của bạn. Hy vọng rằng sẽ giúp.

Các vấn đề liên quan