Javascript 如何使用事件侦听器将ID动态分配给表单字段?

Javascript 如何使用事件侦听器将ID动态分配给表单字段?,javascript,jquery,html,function,anytime,Javascript,Jquery,Html,Function,Anytime,我允许用户点击一个链接,这将为页面添加一个字段。用户可以单击该链接向页面添加任意数量的字段。单击该字段时,将显示一个日历,因为它是一个日期字段。我正在使用任意+时间日历。jQuery等待来自具有特定id的字段的单击事件。以下是代码: $('#start_date').click( function(e) { $('#start_date').AnyTime_noPicker().AnyTime_picker().focus(); } );

我允许用户点击一个链接,这将为页面添加一个字段。用户可以单击该链接向页面添加任意数量的字段。单击该字段时,将显示一个日历,因为它是一个日期字段。我正在使用任意+时间日历。jQuery等待来自具有特定id的字段的单击事件。以下是代码:

$('#start_date').click(
        function(e) {
            $('#start_date').AnyTime_noPicker().AnyTime_picker().focus();
        } );

id是开始日期。问题是,用户可以单击该链接添加一个名为start_date的新字段,由于id相同,jQuery事件侦听器无法唯一标识每个字段。对于这种情况,是否有一种已知的解决方案?

我不清楚:附加唯一的数字对您不起作用吗?如果您可以创建字段,但它没有附加单击处理程序,那么在创建元素时尝试向元素添加一个
class=“pickerField”
,并将处理程序更改为:

$('.pickerField').click(
        function(e) {
            $(this).AnyTime_noPicker().AnyTime_picker().focus();
        } );
我认为这应该适用于jQuery1.7.2。如果出于某种原因,它没有,请尝试以下操作:

$('.pickerField').on('click',
        function(e) {
            $(this).AnyTime_noPicker().AnyTime_picker().focus();
        } );

如果您使用的是较旧版本的jQuery,请尝试使用
live
而不是
on

@code悖论:谢谢您的回答。这不太管用。开始时,它适用于start_date字段。然后,当我单击添加新字段时,当我单击旧的开始日期字段或新字段时,它没有显示日历。代码是:
$('[id^=start\u date\'')。单击(函数(e){$('[id^=start\u date\''))。任何时间\u noPicker()。任何时间\u picker().focus();})您可以在id后面附加一个后缀号,比如您的动态控件id将是start\u date1,start\u date2…,可能有更好的解决方案。@MSUH:这就是我正在做的。我有一个迭代器附加到开始日期的末尾。因此,它们显示为
start\u date\u 0、start\u date\u 1等
请注意,您仍然需要为每个字段分配一个唯一的ID,以便它在任何时间工作™嗨,我发现了一个主要问题,它解释了为什么额外的开始日期字段没有响应点击事件。我使用了
elmt.innerHTML+=
,这使得脚本没有响应。不幸的是,你的解决方案不起作用。附加字段没有响应。单击初始字段时,使用
[id^=start\u date.]
使日历显示在附加字段中。我重新设计了我的表格,这样我就不必再担心这个问题了。