2012-12-03 32 views
0

我在閱讀textarea的值時保留製表符的問題。 我添加的標籤如下:在通過JavaScript添加後從textarea中讀取時保留標籤

$("#code-editor").keydown(function (e) { 
    if (e.keyCode === 9) { // tab was pressed 
     // get caret position/selection 
     var start = this.selectionStart; 
     var end = this.selectionEnd; 

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

     // set textarea value to: text before caret + tab + text after caret 
     $this.val(value.substring(0, start) 
        + "\t" 
        + value.substring(end)); 

     // put caret at right position again (add one for the tab) 
     this.selectionStart = this.selectionEnd = start + 1; 

     // prevent the focus lose 
     e.preventDefault(); 
    } 
}); 

的選項卡正確插入,並預期將顯示在文本區域。 當我然後讀取textrea的值並嘗試用html格式替換爲製表符時出現問題。

$("#code-editor").keyup(function (e) { 
     var value = $(this).val(); 
     //Do formatting 
     var lines = value.split("\n"); 

     var newvalue = ""; 

     for (var i = 0; i < lines.length; i++) { 
      lines[i].replace(/\t/g, "<span style='padding-left:3em'></span>"); 
      lines[i] += "<br />"; 
      newvalue += lines[i]; 
     } 

     $('#editor-displayarea').html(newvalue); 
    }); 

我發現從textarea中讀取標籤時似乎不會保留。

有沒有辦法解決這個問題或者我採取了錯誤的方法?

謝謝。

更新: 我曾嘗試在正則表達式中使用一些變體,如下面的註釋中所述,但無濟於事。

+0

你應該逃避你的正則表達式的標籤,我認爲:行[I] .replace(/ \\ T/G,... –

+0

我已經嘗試過,我也嘗試使用RegExp對象,如var patt = new RegExp(「\ t」,「g」);以及新的RegExp(「\\ t」,「g」),但都不是當我調試javascript並閱讀textarea的值時,它不會顯示製表符,但回車符是可見的。 – dekin88

回答

0

當您替換選項卡時,您沒有存儲該值。嘗試這樣的事情(我會留在跨度&nbsp;以及):

for (var i = 0; i < lines.length; i++) { 
    var replaced = lines[i].replace(/\t/g, "<span style='padding-left:3em'>&nbsp;</span>"); 
    replaced += "<br />"; 
    newvalue += replaced; 
} 
+0

我嘗試過的第一件事情是使用純文本,如'tab'或只是一個隨機的字符串,但仍然沒有運氣 – dekin88

+0

@ dekin88我想我可能已經找到了錯誤並更新了我的答案 – Sharlike

+0

哦,親愛的我/我的一部分是什麼疏忽呵呵。非常感謝那個伴侶,就像一個魅力! – dekin88