我正在寻找一种最有效的方法来添加一组字段,并在click事件上附加datepicker小部件。所以这里我在页面上生成了一组索引事件:
<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>
..附上了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] );
}
});
我需要一个函数,它会在最后一个div class =“event”之后在div id =“event”之后添加另一个div class =“event”,其中N是下一个索引,并将上面的datepicker小部件附加到新输入字段class =“date”like:
<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>
谢谢。
答案 0 :(得分:0)
我想我明白了:)
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);
}