在Javascript中向变量追加日期

在Javascript中向变量追加日期,javascript,php,ajax,Javascript,Php,Ajax,我有以下代码,如何将日期附加到新输入数据的前端对我来说并不直观 基本上,我有一个文本字段,允许编辑其中的数据。它最初从数据库中提取oldVal,在td中显示它,并允许用户更新/编辑/添加到它。当焦点离开该文本区域时,调用该方法,然后调用一个php文件写入数据库 运输署发言人说: <td class="editable-col" contenteditable="true" col-index='4' oldVal ="<?php echo nl2br($res2['status'])

我有以下代码,如何将日期附加到新输入数据的前端对我来说并不直观

基本上,我有一个文本字段,允许编辑其中的数据。它最初从数据库中提取oldVal,在td中显示它,并允许用户更新/编辑/添加到它。当焦点离开该文本区域时,调用该方法,然后调用一个php文件写入数据库

运输署发言人说:

<td class="editable-col" contenteditable="true" col-index='4' oldVal ="<?php echo nl2br($res2['status']); ?>"><?php echo nl2br($res2['status']); ?></td>

对于初学者,您可以使用
日期(“fj,Y”)
月日、年格式返回日期: 因此,这里的算法在<>代码> UpDATELY1.php脚本:

步骤1:获取发布的值并对其进行清理

第二步:在$\u POST['data']['values']中获取

之后字符串的最后一部分(基于JS逻辑,假设最后一行是此处新添加的字符串)

步骤3:将今天的日期以所需格式添加到字符串的最后一部分(新添加的数据)

步骤4:从数据库中提取旧数据。这一步很重要,因为我们不相信输入的数据用户,他可能篡改了以前添加的数据的日期

第5步:将第3步中的数据附加到第4步中的数据(即,oldData+'br/'+date+newData)

步骤6:将此数据写入数据库

第7步:如果一切顺利,请将新写入的数据返回前端

要执行上述操作,您的php脚本应该执行以下操作:

 // When you've the post
 $_POST  = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
 //whatever is present in the text box
 $userData = explode("<br />",$_POST['data']['value']);
 //newly entered line/ data and current data
 $todayDate = date("F j,Y")
 $newDataToSaveWithDate =  $todayDate." - ".$dataToSave[count($dataToSave)-1]; 
 //fetech the old data from DB again we don't trust the user he might have changed the date of previously edited data
 //assuming the oldData is fetched correctly into a variable called $oldData
 $dataToSave = $oldData.'<br />'.$newDataToSaveWithDate;
// Save $date to DB
//assuming when everything goes right and the DB is updated
echo $dataToSave; //this would return a date like March 23, 2017 subjected to your datetimezone

您可以使用本机JavaScript代码在客户端执行此操作:您可以使用获取时间,并编写一个返回格式化日期的函数。(在JS中没有简单的内置方式来格式化日期对象,但您可以使用诸如的库来实现这一点)

这里有一个函数用于设置当前日期的格式:


您想在客户端还是服务器上执行此操作?可能是我在AJAX调用中没有看到任何捕获和处理PHP调用返回数据的代码的副本???这个函数很好。。。它将“数据”发布到php页面并处理得很好。也许我不太清楚(这是漫长的一天)。我的数据库将此值存储在单个文本行中。因此,每次使用新值更新数据库时。td本身最初显示数据库中的旧值,并附加任何新数据,并使用old+new更新行。我想在网页上添加每个新项目时将日期附加到这些项目。清澈如泥?:)它还需要是添加更新的日期。。当它被显示时就不会了。因此,在写入数据库时需要追加日期。您的意思是要将数据存储为数据库中的
date
+
oldData
+
newData
吗?oldData,date+newDataclose。。。以下是我现在得到的:2017年3月22日状态测试2。。。状态已经存在,我添加了“测试2”。。。它在oldVal“Status”之前添加了日期,而不是在“Test 2”之前。好的,所以听起来您需要跟踪旧文本和新文本。我将从
td
的输入中删除数据字段的旧值,这样用户只需输入一个新值:
基本上,您希望将现有值与新输入的值分开,这样您就可以知道在何处插入日期字符串。据我所知,你想先看到旧值,然后再看到新值,对吗?您不想看到旧值重复多次吗?您是正确的,是的。在TD中显示旧值,允许输入新值,并仅在新值的正面附加日期我在我的原始帖子中添加了一个图像。。。也许能帮你弄清楚一点。数据库(oldVal)中已存在“2017年3月21日-状态”。然后我输入了“测试2”,当它保存时,我希望它是:“2017年3月22日-测试2”
$(document).ready(function(){
  $('td.editable-col').on('focusout', function() {
    data = {};
    data['val'] = getDate() + $(this).html().replace(/\r?\n/g, '<br />');
    data['id'] = $(this).parent('tr').attr('data-row-id');
    data['index'] = $(this).attr('col-index');

$.ajax({   

      type: "POST",  
      url: "updater_1.php",  
      cache:false,  
      data: data,
      dataType: "json",       

    });
  });
});
 // When you've the post
 $_POST  = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
 //whatever is present in the text box
 $userData = explode("<br />",$_POST['data']['value']);
 //newly entered line/ data and current data
 $todayDate = date("F j,Y")
 $newDataToSaveWithDate =  $todayDate." - ".$dataToSave[count($dataToSave)-1]; 
 //fetech the old data from DB again we don't trust the user he might have changed the date of previously edited data
 //assuming the oldData is fetched correctly into a variable called $oldData
 $dataToSave = $oldData.'<br />'.$newDataToSaveWithDate;
// Save $date to DB
//assuming when everything goes right and the DB is updated
echo $dataToSave; //this would return a date like March 23, 2017 subjected to your datetimezone
    var self = this; //or any other selector where you want to update/display the date
    $.ajax({   

          type: "POST",  
          url: "updater_1.php",  
          cache:false,  
          data: data,
          dataType: "json",
          success: function(data) {
                       $(this).html(data);
                   }       

    });
function getDate() {
    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();

    if(dd<10) {
        dd='0'+dd
    } 

    if(mm<10) {
        mm='0'+mm
    } 

    today = mm+'/'+dd+'/'+yyyy;
    return today;
}
data['val'] = getDate() + $(this).html().replace(/\r?\n/g, '<br />');