简体   繁体   中英

Trigger jQuery datetimepicker on dynamic content

I am using this datetimepicker: https://github.com/xdan/datetimepicker

I have a form where users can dynamically add more fields. I haven't been able to find a way to get the datetimepicker to show on the dynamically-added fields.

Here is a JS Bin: http://jsbin.com/coxafodace/1/edit?html,js,output

I have tried using live() and onclick() and a whole bunch of other things, but the datetimepicker always appears on the last non-dynamic form field, never on the newly-created form field.

So what can I do to trigger the datatimepicker on the dynamic fields?

It is because you are cloning the last repeated item so it has the same events, same everything. A better way to do it is to make a template with:

<script type="text/template" id="date-time-template">
    //repeated html goes in here
</script>

And then in your javascript append a new instance and initialize the datepicker on the NEW 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,
    });
});

Here is an updated jsbin

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM