2016-12-16 73 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來跟蹤所有這些並動態地執行。 –