2012-10-14 35 views
0

我已經實現了Alex Gorbatchev的Synthax熒光筆,它的工作效果很好,但是當用戶雙擊突出顯示的文本(從textarea變成div時),它進入編輯模式(在其中生成無名文本,並帶有高度文本數據)。我創建了一個按鈕,並執行單擊事件試圖抓住新輸入/編輯的文本,通過ajax來重新載入它,但我不斷收到textarea中的舊文本(它變成了高亮的div)或'undefined' 。我使用jQuery來獲取新輸入的文本,但沒有運氣。任何幫助是極大的讚賞!synthax highlighter - 在textarea元素中編輯突出顯示的文本

extends layout 
block content 
    h2=d.title 
    a(class='button', href='/documents/' + d._id + '/edit') Edit 
    p 
    a(href='/documents', class='button') 
     ← All Documents 
    script(type="text/javascript") 
    SyntaxHighlighter.all(); 
    SyntaxHighlighter.config.tagName = "textarea"; 

    form(name="form1") 
    div(style="width:800px; margin:0 auto; border: 2px grey solid;") 
     textarea(class="brush: js;", style="width:800px;", readonly="true", id = "srcText", disabled) 
     =d.data || '' 

    button(id="submit", class='button') 

    script 
    $("#submit").click(function (e) { 
     console.log("boom"); 
     var dId = '#{d._id}'; 
     var dData = $("textarea").val(); // << -- problem here cant obtain the value 
     console.log("DATA is: ", dData); 
     var updateDocumentIdPath = "/documents/" + dId + "/update"; 
     $.ajax({ 
     url: updateDocumentIdPath, 
     type: "POST", 
     data: {"data": dData}, 
     success: function (data) { 
      console.log("success"); 
      console.log(data); 
     }, 
     error: function() { 
      console.log("error"); 
     }, 
     complete: function() { 
     } 
     }); // END ajax 
    }); 

回答

0

用於獲取數據,您正在使用$("textarea").val();返回的第一textareadocument價值。文檔:http://api.jquery.com/val/

您需要的是類似於:$("textarea:last").val();。這將返回document中最後一個textarea的值。假設它將是document中的最後一個textarea,因爲您在切換到編輯模式之前提到了它被動態插入。

+0

謝謝你的回答!仍然這個變量是未定義的。我認爲,在臨時textarea gous失焦後,價值瞬間消失:(實際上,我檢查了元素並點擊了/離開textarea,textarea標籤在聚焦發生後立即消失。 –

相關問題