在动态内容上触发 jQuery 日期时间选择器
Trigger jQuery datetimepicker on dynamic content
我正在使用这个日期时间选择器:https://github.com/xdan/datetimepicker
我有一个表单,用户可以在其中动态添加更多字段。我一直没能找到让日期时间选择器显示在动态添加的字段上的方法。
这是一个 JS Bin:http://jsbin.com/coxafodace/1/edit?html,js,output
我试过使用 live() 和 onclick() 以及一大堆其他东西,但是日期时间选择器总是出现在最后一个非动态表单字段上,从不出现在新创建的表单字段上。
那么我该怎么做才能触发动态字段上的数据时间选择器?
这是因为您正在克隆最后一个重复的项目,所以它具有相同的事件,相同的一切。一个更好的方法是制作一个模板:
<script type="text/template" id="date-time-template">
//repeated html goes in here
</script>
然后在您的 javascript 中附加一个新实例并在新 html 上初始化日期选择器。
var repeatingTemplate = $('#date-time-template').html();
jQuery('.repeat').click(function(e){
e.preventDefault();
//Creates a NEW jquery object of the same html
var $repeating = $(repeatingTemplate);
var lastRepeatingGroup = jQuery('.repeating').last();
//places the new line after the last one
lastRepeatingGroup.after($repeating);
//binds the datetime events to the newly added line
$repeating.find('.starttime').datetimepicker({
datepicker:false,
// mask: true,
format:'H:i',
step: 15,
});
$repeating.find('.endtime').datetimepicker({
datepicker:false,
// mask: true,
format:'H:i',
step: 15,
});
});
我正在使用这个日期时间选择器:https://github.com/xdan/datetimepicker
我有一个表单,用户可以在其中动态添加更多字段。我一直没能找到让日期时间选择器显示在动态添加的字段上的方法。
这是一个 JS Bin:http://jsbin.com/coxafodace/1/edit?html,js,output
我试过使用 live() 和 onclick() 以及一大堆其他东西,但是日期时间选择器总是出现在最后一个非动态表单字段上,从不出现在新创建的表单字段上。
那么我该怎么做才能触发动态字段上的数据时间选择器?
这是因为您正在克隆最后一个重复的项目,所以它具有相同的事件,相同的一切。一个更好的方法是制作一个模板:
<script type="text/template" id="date-time-template">
//repeated html goes in here
</script>
然后在您的 javascript 中附加一个新实例并在新 html 上初始化日期选择器。
var repeatingTemplate = $('#date-time-template').html();
jQuery('.repeat').click(function(e){
e.preventDefault();
//Creates a NEW jquery object of the same html
var $repeating = $(repeatingTemplate);
var lastRepeatingGroup = jQuery('.repeating').last();
//places the new line after the last one
lastRepeatingGroup.after($repeating);
//binds the datetime events to the newly added line
$repeating.find('.starttime').datetimepicker({
datepicker:false,
// mask: true,
format:'H:i',
step: 15,
});
$repeating.find('.endtime').datetimepicker({
datepicker:false,
// mask: true,
format:'H:i',
step: 15,
});
});