简体   繁体   English

用附加的日期选择器小部件附加索引输入字段

[英]Append indexed input fields with attached datepicker widget

I am looking for the most efficient way to add a set of fields with datepicker widget attached on click event. 我正在寻找最有效的方法来添加带有clickp事件附加的datepicker小部件的字段集。 So here I have a set of indexed events being generated on a page: 因此,这里在页面上生成了一组索引事件:

<div id="events">
  <div class="event">
    <input type="text" id="event_0_startDate" name="event[0].startDate" class="date"/>
    <input type="hidden" id="event_0_startDate_day" name="event[0].startDate_day" />
    <input type="hidden" id="event_0_startDate_month" name="event[0].startDate_month" />
    <input type="hidden" id="event_0_startDate_year" name="event[0].startDate_year"/>
  </div>
  <div class="event">
    <input type="text" id="event_1_startDate" name="event[1].startDate" class="date"/>
    <input type="hidden" id="event_1_startDate_day" name="event[1].startDate_day" />
    <input type="hidden" id="event_1_startDate_month" name="event[1].startDate_month" />
    <input type="hidden" id="event_1_startDate_year" name="event[1].startDate_year" />
  </div>
.... more event divs ....

</div>

<a href="#" id="add_event">Add event</a>

.. with datepicker widget attached: ..附加了datepicker小部件:

$(".date").datepicker({
    onClose: function(dateText,picker) {
        var prefix = $(this).attr('id');
        $('#' + prefix + '_month').val( dateText.split(/\//)[0] );
        $('#' + prefix + '_day').val( dateText.split(/\//)[1] );
        $('#' + prefix + '_year').val( dateText.split(/\//)[2] );
    }
});

I need a function that will add inside div id="events" after the last div class="event" another div class="event" where N is the next index and attach datepicker widget above to the new input field with class="date" like: 我需要一个函数,该函数将在上一个div class =“ event”之后的div id =“ events”内添加另一个div class =“ event”,其中N是下一个索引,并将上面的datepicker小部件附加到具有class =“的新输入字段中日期”,例如:

<div class="event">
  <input type="text" id="event_N_startDate" name="event[N].startDate" class="date"/>
  <input type="hidden" id="event_N_startDate_day" name="event[N].startDate_day"/>
  <input type="hidden" id="event_N_startDate_month" name="event[N].startDate_month" />
  <input type="hidden" id="event_N_startDate_year" name="event[N].startDate_year" />
</div>

Thank you. 谢谢。

I think I got it :) 我想我明白了:)

  var idx = $("div.event").length;

  var wrapper = $('<div>').attr('class','event');

  addEventDate(wrapper, "startDate", idx);

  wrapper.insertAfter("div.event:last");

  function addEventDate(wrapper, prefix, idx) {

        $('<input>').attr({
            name: 'event[' + idx + '].' + prefix',
            id: 'event' + idx + '_' + prefix',
            type: 'text',
            'class': 'date'
        }).appendTo(wrapper);


        $('<input>').attr({
            name: 'event[' + idx + '].' + prefix + '_day',
            id: 'event' + idx + '_' + prefix + '_day',
            type: 'hidden',
            value: ''
        }).appendTo(wrapper);

        $('<input>').attr({
            name: 'event[' + idx + '].' + prefix + '_month',
            id: 'event' + idx + '_' + prefix + '_month',
            type: 'hidden',
            value: ''
        }).appendTo(wrapper);

        $('<input>').attr({
            name: 'event[' + idx + '].' + prefix + '_year',
            id: 'event' + idx + '_' + prefix + '_year',
            type: 'hidden',
            value: ''
        }).appendTo(wrapper);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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