使用jQuery添加日期范围选择器并更新内容
Adding a date range picker with jQuery and updating content
我有以下HTML,当您单击Add Column
按钮时,它会添加我的表标题。然后,当您单击Add Row
时,它会创建行。
我需要添加一个日期选择器并创建按钮,以便用户可以选择一个日期范围,然后该日期范围需要进入相应的旅行日期行。
用户需要单击Add Column
,然后单击Add Date Range
,然后在单元格中输入日期。添加日期范围需要在每行中显示自己的列。然后,当用户选择一个范围时,它应该显示如下内容:Fri, 20 Sep - Mon, 7 Oct 2013
HTML:
<button id="addcolumn">Add Column</button>
<button id="addrow">Add Row</button>
<button id="adddaterange">Add Date Range</button>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<thead id="theads">
<tr>
<th class="th">Travel Dates</th>
<th class="th">Duration</th>
<th class="th">Trip Cost</th>
</tr>
</thead>
<tbody id="tbody">
</tbody>
</table>
jQuery:
$(document).ready(function () {
var $cell = $('<td>', {
'class': 'td',
'align': 'center',
'contenteditable': '',
'text': 'Content'
});
var $header = $('<th>', {
'class': 'th',
'contenteditable': '',
'text': 'Heading'
});
$('#addcolumn').click(function() {
$header.clone().appendTo('thead tr');
$cell.clone().appendTo('tbody tr');
});
$('#addrow').click(function(){
var $row = $('<tr>');
$('th').each(function() {
$cell.clone().appendTo($row);
});
$row.appendTo('tbody');
});
});
JSFIDDLE:http://jsfiddle.net/prBZS/35/
我制作了一把小提琴,并展示了它的工作原理;我希望我没有正确理解你在问什么。
该项目使用一个(我不能将其设置为隐藏…)输入字段,并在其上附加一个jQuery datepick
;它没有使用标准的jQuery UI日期选择器,因为它不支持范围选择。
当您添加列时,它将被添加一个类canDatePicker
到该列的每个单元格,这个类告诉可以将日期选择器"附加"到该单元格。对每个单元格使用contenteditable,我通过添加一个类focused
来管理当前关注的单元格,这样我就知道了当前单元格。当您将日期选择器附加到单元格时,它会向单元格添加一个类hasDatePicker
,以便将来在单元格上进行新的单击。
从日期选择器中选择范围时,范围将设置在单元格的文本上。如果再次单击单元格,则会打开日期选择器,其中包含先前选定的单元格区域。
如果你需要更多的代码解释,请告诉我。
代码:
$(document).ready(function () {
$('#datepicker').datepick({
rangeSelect: true,
onClose: function () {
var dates = $('#datepicker').datepick('getDate');
var value = '';
for (var i = 0; i < dates.length; i++) {
value += (i == 0 ? '' : ' - ') + $.datepick.formatDate(dates[i]);
}
$('.focused').html(value);
}
});
$(document).on('focus', '.hasDatePicker', function (e) {
var dates = $(this).text().split(' - ');
$("#datepicker").datepick('setDate', dates);
$("#datepicker").datepick('show')
});
$(document).on('focus', 'td', function (e) {
$("td").removeClass('focused');
$(e.target).addClass('focused');
});
var $cell = $('<td>', {
'class': 'td',
'align': 'center',
'contenteditable': '',
'text': 'Content'
});
var $header = $('<th>', {
'class': 'th',
'contenteditable': '',
'text': 'Heading'
});
$('#addcolumn').click(function () {
$header.clone().appendTo('thead tr');
$cell.clone().appendTo('tbody tr');
$('table>tbody>tr>td:nth-child(n+4)').addClass('canDatePicker');
});
$('#addrow').click(function () {
var $row = $('<tr>');
$('th').each(function () {
$cell.clone().appendTo($row);
});
$row.appendTo('tbody');
$('table>tbody>tr>td:nth-child(n+4)').addClass('canDatePicker');
});
$('#adddaterange').click(function () {
if ($(".focused").length == 0 || !($(".focused").hasClass("canDatePicker"))) return
$(".focused").addClass("hasDatePicker");
$("#datepicker").datepick('show')
});
});
演示:http://jsfiddle.net/IrvinDominin/WzkBS/
开始演示,按Add row,Add column,聚焦新单元格并按Add date range,然后尝试使用演示。
您可以在http://www.eyecon.ro/bootstrap-datepicker/
或
可以在http://jqueryui.com/datepicker/
用于日期范围的最大值和最小值http://jqueryui.com/datepicker/#date-范围
$(elementId).datepicker({showOn:"按钮",buttonImage:"images/icons/calendar.gif",buttonImageOnly:true,minDate:(minDate)?minDate:",);
- 仅当javascript的新内容出现时,才每3秒更新一次javascript
- 如何在Ajax加载新内容时停止JavaScript执行
- 点击后,永久更改内容;悬停时,简要显示新内容
- 导致出现新内容块的标记(谷歌地图)
- CSS转换后用新内容替换空白
- 当用户到达页面右侧时加载新内容
- 使用原型更新表内容时出错
- JQuery:更新表内容花费的时间太长
- 如何使用jQuery显示新内容
- 使用 Javascript 在页面末尾附加新内容
- 使用不同的API参数更新DIV内容
- jQuery弹出显示旧内容,而不是新内容
- JSON加载新内容后访问元素
- 加载新内容时调整iframe的高度
- 在节点脚本中,如何监视文件的更改并获取更新的内容
- Webgrid需要使用MVC中的新内容进行更新
- 如何检查表中的新内容,然后更新浏览器选项卡标题
- 在创建/更新时,使用$state.go('main.myEntries'),但直到重新加载更新或新内容为
- 在更新地址字段时导航到新内容而不重新加载页面
- 当最小化页面上出现新内容时,如何更新选项卡的标题?