相关的js / jQuery:
$(".changeDate").on('click',
function(e) {
var taskID = $(this).data('json').taskID;
var dp = $("<input type='text' />").hide().appendTo('body');
var curDate = $('#task'+taskID).text();
dp.datepicker({
onSelect: function(dateText, inst) {
dateObj = {};
dateObj['method'] = 'changeDueDate';
var newDate = $(this).datepicker().val();
dateObj['newDate'] = newDate;
dateObj['taskID'] = taskID;
$.ajax({
url: 'editTasks.php',
type: 'post',
dataType: 'json',
data: dateObj,
success:
function(date) {
if(date.status === 'true') {
$('#task'+taskID).text(newDate);
dp.datepicker( "destroy" );
dp.removeClass("hasDatepicker").removeAttr('id');
delete curDate;
}else{
alert(date.error);
}
},
error: function(xhr) {
alert("Something is broken. Let an SA know!\n" + 'Status code: ' + xhr.status);
}
});
},
dateFormat: 'yy-mm-dd',
setDate: curDate,
showOtherMonths: true,
showButtonPanel: true,
showMonths: true,
showYears: true,
changeMonth: true,
changeYear: true,
minDate: 0
});
if (dp.datepicker('widget').is(':hidden')) {
dp.show().datepicker('show').hide();
dp.datepicker("widget").position({
my: "left top",
at: "right top",
of: this
});
} else {
dp.hide();
}
e.preventDefault();
});
相关HTML&amp; PHP:
<div class="viewContainer">
<div align="center" class="smallHeader">Tasks</div>
<div id="ticketTasksError"></div>
<table style="width:100%">
<?php
$tasks = array();
while($row = $ticketTasksResults->fetch_assoc()) {
$note = stripslashes((isset($row["Note"])) ? $row['Note'] : 'Add note');
$row["Completed"] == 0 ? $dueDate = $row['DueDate'] : $dueDate = 'Completed on: ' . $row['CompletedWhen'];
?>
<tr bgcolor="#E5E5E5">
<td class="tableCellBold"><?php echo $row['Name']; ?></td>
<td class="tableCell"><?php echo $row['Description']; ?></td>
<td class="tableCell" align="center"><a href="" class="changeDate" id="task<?php echo $row['ID']; ?>" data-json='{"taskID":<?php echo $row['ID']; ?>}'><?php echo $dueDate; ?></a></td>
<td class="tableCell" align="center"><a href="" style="font-size:10pt;" id="editTaskLink">Edit</a></td>
</tr>
<tr bgcolor="#F5F5F5">
<td class="tableCell" colspan="4" style="font-size:13px"><?php echo $row['Note'] == '' ? '<a href="" class="taskNote" data-json="{"taskID":'.$row['ID'].'}">Add Note</a>' : $row['Note']; ?></td>
</tr>
<tr style="border: none; font-size: 5px;"><td> </td></tr>
<?php $i++; } ?>
</table>
<div id="addTask" align="left">
<a href="" style="margin-top:5px;font-size:10pt;padding-left:10px;" id="addTaskLink">Add</a>
</div>
</div>
除了一个问题外,一切都很有效:setDate
总是获得changeDate
类的第一个成员的值。
请假设所有PHP都按预期工作。我确认curDate
的值确实包含了在声明后用alert
构造的正确值。
你能发现我错过的东西吗?提前谢谢。
修改 通过阅读Jay与我联系的文件,我能够克服这个问题。这是一个关闭问题AND和html / php问题(引用不一致)。
谢谢周杰伦!只需将我指向正确的文档,您就可以解决我的问题。编辑2:我想发布解决方案代码,但我不能,因为我没有足够的声誉,但我是社区新手,我必须等待8小时才能回答这个帖子。
所以对于任何感兴趣的人创建一个函数,如:
var getTaskID = function(taskID) {
var curDate = $('#task'+taskID).text();
return curDate;
};
然后我将setDate
改为defaultDate: $(this).data('json').dueDate
它现在按预期工作。