2012-11-09 11 views
0

第一個腳本單擊時將文本轉換爲可編輯文本字段。文本編輯完成後,按下一個提交按鈕即可激活第二個腳本。第二個腳本應通過AJAX將一些信息發送到另一個頁面,以最終提交到數據庫中。前兩個變量(projectID和contactType)通過AJAX發送得很好,但updatedInfo(應該包含編輯文本的變量)始終爲空。我假設這是我失蹤的蠢事,但我無法弄清楚。這兩個腳本如下。

<script type="text/javascript"> 
    $(document).ready(function() { 
     var alreadyActive = ""; 
     $(".editable").on("click", function() { 
      if(!alreadyActive) { 
       OriginalText = $(this).text(); 
       divValue = $(this).attr('value'); 
       $(this).html("<form class='edit-form' name='" + divValue + "'><input type='text' value='" + OriginalText + "' /><input type='submit' value='Update' /></form>"); 
       alreadyActive = "true"; 
      } 
     }); 
    }); 
</script> 
<script type="text/javascript"> 
    $('body').delegate('.edit-form','submit',function(e){ 
     e.preventDefault(); 
     var projectID = <?php echo $projectID ?>; 
     var contactType = $(this).attr('name'); 
     var updatedInfo = $(this).val(); 

     $.ajax({ 
      url: 'editinplace.php?projectID=' + projectID + '&contactType=' + contactType + '&updatedInfo=' + updatedInfo, 
     }); 
    }); 
</script> 
+2

您的表單有一個值? –

回答

6

如果你想獲得表單中的文本字段的值,那麼你想改變:

var updatedInfo = $(this).val(); 

到:

var updatedInfo = $(this).find('input[type="text"]:first').val(); 

什麼你的代碼正在尋找<form>標籤本身的value屬性。相反,因爲您之後的value位於<input>標記中,所以您必須讓jQuery去查看該特定標記。

0

它實際上看起來像你所得到的形式

var updatedInfo = $(this).val(); 

「這個」(如果我正確地閱讀代碼)的「價值」是形式,而不是輸入。並像其他人提到的回答獲取按鈕的文本嘗試$(this).text()

+0

我發佈之前曾嘗試使用$(this).text()。 Coby的回答非常好,謝謝你的回答。 – scrolls