2016-12-16 72 views
2

所以,我使用PDO来存储数据库中的数据。 我有一个数组($ myitems)与几个项目,其中每个项目有两个属性:id和名称。 用PHP我使用这个阵列创建的列表,就像你可以在下面的代码中看到:如何在JQuery函数中获取对象的属性值?

的index.php中

 <ul class="items"> 
      <?php foreach($myitems as $item): ?> 
      <li class="test"> 
       <form action="edit.php" method="post"> 
        <span class="itemlist"><?php echo $item['name']; ?></span>      
       </form> 
      </li> 
      <?php endforeach; ?> 

     </ul> 

所以当列表中的项目用户双击,它将跨度“转换”为输入文本,因此用户可以更新项目的名称。我设法使用JQuery来做到这一点,我可以获取该项目的名称,因为它显示在范围标记中。这是我应得的名字的价值和改变跨度到输入文本:

在JS文件

$(".itemlist").dblclick(function (e) {   
      e.stopPropagation(); 
      var currentEle = $(this); 
      var name = $(this).html(); 
      updateVal(currentEle, name);   
}); 

function updateVal(currentEle, name) { 
    $(document).off('click'); 
    $(currentEle).html('<input class="liVal" name="editname" type="text" value="' + name+ '" />'); 

    $(".thVal").focus(); 
    $(".thVal").keyup(function (event) { 
     if (event.keyCode == 13) { 

      $(currentEle).html($(".liVal").val()); 
     } 
    }); 
} 

它可以在浏览器中正常,但在更新项目的价值数据库我需要提交表单,这是我如何做它:

也是JS文件

$(".liVal").onkeyup(function(event) { 
    if (event.keyCode == 13) { 
     this.form.submit(); 
     return false; 
    } 
}); 

提交后的形式,我可以使用输入的属性名称得到了edit.php项目名称的价值,就像这样:

在edit.php

if(isset($_POST['editname'])){ 
    $newname= trim($_POST['editname']);  
} 

但要更新一个项目我也需要它的ID。这里是问题,我怎么能得到这个ID?我真的是PHP和JQuery的新手,我需要帮助。

+0

顺便说一句,谢谢你提出一个明确的问题。在SO上非常罕见。 –

回答

2

您需要将ID添加为表单中隐藏的输入字段。

<ul class="items"> 
    <?php foreach($myitems as $item): ?> 
     <li class="test"> 
      <form action="edit.php" method="post"> 
       <!-- ADD ID BELOW --> 
       <input type="hidden" name="id" value="<?php echo($item['id']); ?>"> 
       <span class="itemlist"><?php echo $item['name']; ?></span>      
      </form> 
     </li> 
    <?php endforeach; ?> 
</ul> 

然后,当您提交表单时,它应该同时具有ID和动态元素。

+0

我几乎在完成我的答案,但你击败了我。不确定PHP的语法,但这绝对是你如何做到的。 – rabelloo

+1

哦,谢谢你!它工作完美,而且非常简单! –

+0

这不是我个人如何去做,但考虑到目前的结构,这是做到这一点的一种方式。我个人会使用数据属性和AJAX来跟踪所有这些并动态地执行。 –