2012-10-14 36 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标签在聚焦发生后立即消失。 –

相关问题