我已经动态创建了文本框,我希望每个文本框都能够在点击时显示日历。我正在使用的代码是:
$(".datepicker_recurring_start" ).datepicker();
这只适用于第一个文本框,即使我所有的文本框都有一个名为 datepicker_recurring_start 的类。
非常感谢您的帮助!
我已经动态创建了文本框,我希望每个文本框都能够在点击时显示日历。我正在使用的代码是:
$(".datepicker_recurring_start" ).datepicker();
这只适用于第一个文本框,即使我所有的文本框都有一个名为 datepicker_recurring_start 的类。
非常感谢您的帮助!
这是诀窍:
$('body').on('focus',".datepicker_recurring_start", function(){
$(this).datepicker();
});
该$('...selector..').on('..event..', '...another-selector...', ...callback...);
语法手段:
添加一个监听器...selector..
(在body
我们的例子)的事件..event..
(“焦点”在我们的例子)。对于与选择器匹配的匹配节点的所有后代...another-selector...
(.datepicker_recurring_start
在我们的示例中),应用事件处理程序...callback...
(在我们的示例中为内联函数)
请参阅http://api.jquery.com/on/,尤其是有关“委托事件”的部分
对我来说,下面的 jquery 有效:
将“正文”更改为文档
$(document).on('focus',".datepicker_recurring_start", function(){
$(this).datepicker();
});
注意:确保每个字段的 id 都不同
skafandri +1 的出色回答
这只是更新以检查 hasDatepicker 类。
$('body').on('focus',".datepicker", function(){
if( $(this).hasClass('hasDatepicker') === false ) {
$(this).datepicker();
}
});
确保您的.date-picker
类元素还没有hasDatepicker
类。如果是这样,即使尝试重新初始化$myDatepicker.datepicker();
也会失败!相反,你需要做...
$myDatepicker.removeClass('hasDatepicker').datepicker();
您需要.datepicker();
在动态创建其他文本框元素后再次运行。
我建议在将元素添加到 DOM 的调用的回调方法中这样做。
因此,假设您正在使用 JQuery Load 方法从源中提取元素并将它们加载到 DOM 中,您将执行以下操作:
$('#id_of_div_youre_dynamically_adding_to').load('ajax/get_textbox', function() {
$(".datepicker_recurring_start" ).datepicker();
});