0

相关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>&nbsp;</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

它现在按预期工作。

4

1 回答 1

0

这似乎是由Closure问题引起的。您需要使用适当的闭包更新您的函数。可能需要正确传递 datepicker 中的所有“非本地”变量。看这里

于 2013-07-15T03:45:19.233 回答