如何为 JavaScript 生成的文本框附加 onclick 事件?

发布于 2024-08-20 08:32:18 字数 919 浏览 6 评论 0原文

我有一个表行,其中包含一个文本框,它有一个显示 JavaScript 日历的 onclick...我正在使用文本框向表中添加行,但我不知道如何将 onclick 事件附加到 JavaScript 生成的文本框。 我的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);">

生成一个文本框,

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

I have a table row which contains a textbox and it has an onclick which displays a JavaScript calendar... I am adding rows to the table with textbox, but I don't know how to attach onclick event to the JavaScript generated textbox...

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

And my JavaScript generates a 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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

二智少女 2024-08-27 08:32:19

HTML5/ES6 方法:

var el = document.createElement('input')

[...]

el.addEventListener('click', function () {
  displayDatePicker('attendanceDateadd1')
})

HTML5/ES6 approach:

var el = document.createElement('input')

[...]

el.addEventListener('click', function () {
  displayDatePicker('attendanceDateadd1')
})
贵在坚持 2024-08-27 08:32:18

像这样:

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

顺便说一句:请注意 DOM 中的大小写敏感性。它是“onclick”,而不是“onClick”

Like this:

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

BTW: Be careful with case sensitivity in the DOM. It's "onclick", not "onClick".

薄情伤 2024-08-27 08:32:18

以您的示例为例,我认为您想要这样做:

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

唯一的技巧是意识到为什么需要将 displayDatePicker 调用包装在 function() { ... } 中代码。基本上,您需要为 onclick 属性分配一个函数,但是为了做到这一点,您不能只执行 el.onclick = displayDatePicker(el.id) 因为这将告诉 javascript 执行 displayDatePicker 函数并将结果分配给 onclick 处理程序,而不是分配函数调用本身。因此,为了解决这个问题,您创建了一个匿名函数,该函数依次调用您的 displayDatePicker。希望有帮助。

Taking your example, I think you want to do this:

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

The only trick is to realise why you need to wrap your displayDatePicker call in the function() { ... } code. Basically, you need to assign a function to the onclick property, however in order to do this you can't just do el.onclick = displayDatePicker(el.id) since this would tell javascript to execute the displayDatePicker function and assign the result to the onclick handler rather than assigning the function call itself. So to get around this you create an anonymous function that in turn calls your displayDatePicker. Hope that helps.

梦里°也失望 2024-08-27 08:32:18
el.onclick = function(){
  displayDatePicker(this.id);
};
el.onclick = function(){
  displayDatePicker(this.id);
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文