У меня есть строка таблицы, которая содержит текстовое поле, и это имеет onclick, который отображает календарь JavaScript... Я добавляю строки к таблице с текстовым полем, но я не знаю, как присоединить onclick событие к сгенерированному текстовому полю 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);">
И мой JavaScript генерирует текстовое поле,
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);
Вот так:
var el = document.createElement('input');
...
el.onclick = function() {
displayDatePicker('attendanceDateadd1');
};
BTW: Будьте осторожны с чувствительностью к регистру в DOM. Это "onclick"
, а не "onClick"
.
el.onclick = function(){
displayDatePicker(this.id);
};
На вашем примере я думаю, что вы хотите сделать следующее:
el.onclick = function() { displayDatePicker(el.id); };
Единственный трюк - это понять, зачем вам нужно завернуть вызов displayDatePicker
в функцию { ...] ... }
код. В принципе, необходимо назначить функцию свойству onclick
, однако для этого нельзя просто сделать el.onclick = displayDatePicker(el.id)
, т.к. это скажет javascript выполнить функцию displayDatePicker
и назначить результат обработчику onclick
, а не назначить сам вызов функции. Для этого создается анонимная функция, которая, в свою очередь, вызывает функцию displayDatePicker
. Надеюсь, это поможет.