【发布时间】:2016-12-16 11:21:36
【问题描述】:
我已经在一行中创建了表格,并在表格中添加了行按钮。当我们点击添加按钮时,它会在表格中创建相同的第一行克隆。
带有 jsfiddle 的完整工作代码:
https://jsfiddle.net/r83vmv1q/12/
我尝试在文本框中显示两天的差异。 查看代码如下:
<td><input type="checkbox" name="chk"/></td>
<!-- <td><input type="text" name="date[]" value="" /></td>-->
<td><input type="text" name="work[]" value="" class="task" />
<span class="text-danger"><?php echo form_error('work[]');?></span>
</td>
<td><input type="text" name="assigned_date[]" value="" class="assigned_date" />
<span class="text-danger"><?php echo form_error('assigned_date[]');?></span>
</td>
<td><input type="text" name="last_date[]" value="" class="last_date" />
<span class="text-danger"><?php echo form_error('last_date[]');?></span>
</td>
<td><input type="text" name="spent[]" value="" class="spent" />
<span class="text-danger"><?php echo form_error('spent[]');?></span>
</td>
<td><input type="text" name="remaining[]" value="" />
<span class="text-danger"><?php echo form_error('remaining[]');?></span>
</td>
<td><input type="text" name="frequency[]" value="" />
<span class="text-danger"><?php echo form_error('frequency[]');?></span>
</td>
所以我的问题是,当用户从 j 查询中选择分配日期和最后日期时,当前日期和分配日期之间的差异应该显示在已用文本框中,最后日期和当前日期之间的差异应该显示在剩余文本框中。
这是添加新行的jquerycode:
<SCRIPT language="javascript">
function addRow(tableID) {
$(".last_date").datepicker("destroy");
$(".assigned_date").datepicker("destroy");
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[1].cells.length;
for(var i=0; i<colCount; i++) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[1].cells[i].innerHTML;
//alert(newcell.childNodes);
switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value = "";
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
case "select-one":
newcell.childNodes[0].selectedIndex = 0;
break;
}
}
var dateAssignedId = Math.round(new Date().getTime() + (Math.random() * 100));
var dateDueId = Math.round(new Date().getTime() + (Math.random() * 100));
$(row).find('.assigned_date')[0].id = dateAssignedId;
$(row).find('.last_date')[0].id = dateDueId;
$(".assigned_date").datepicker({dateFormat: "yy-mm-dd"});
$(".last_date").datepicker({dateFormat: "yy-mm-dd"});
}
</SCRIPT>
<script>
$(".assigned_date").datepicker({dateFormat: "yy-mm-dd"});
$(".last_date").datepicker({dateFormat: "yy-mm-dd"});
</script>
这里是jquery计算差异代码:
var start = new Date();
var end = $('assigned_date').datepicker('getDate');
var days = (end - start)/1000/60/60/24;
var textbox = document.getElementByClass("spent");
textbox.value = days;
这是 jsfiddle 中的完整工作代码: JSFiddle
【问题讨论】:
-
需要注意的一点无关紧要:您的 javascript 看起来很乱。你将 vanilla javascript 和 jquery 混在一起太多了。尽量坚持其中任何一个以避免混淆。
-
你想显示什么不同的天数?
-
@user5200704 .我的意思是当前日期和指定日期之间的差异,通过输入选择并在使用的名称文本框中显示差异结果
-
您的计算完成但在 datepickar 中的每一行选择中以文本显示有问题?
-
是的,我需要计算差异并在每一行中显示