相关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 & 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 链接到我的文档,我能够克服这个问题。这是一个关闭问题和 html/php 问题(引用不一致)。
谢谢杰!只需将我指向正确的文档,您就基本上解决了我的问题。
编辑 2:我想发布解决方案代码,但我不能发布,因为我还没有足够的声誉,因为我是社区的新手,我必须等待 8 小时才能回复帖子。
因此,对于任何有兴趣的人创建一个函数,如下所示:
var getTaskID = function(taskID) {
var curDate = $('#task'+taskID).text();
return curDate;
};
然后我setDate
改为defaultDate: $(this).data('json').dueDate
它现在按预期工作。