2013-12-19 111 views
0

我想這樣做,所以當用戶按Enter鍵進行換行時,它會產生雙重中斷:\n\ntextarea自動換行新行?

有沒有辦法通過jQuery做到這一點&正則表達式?

最好在粘貼文本時,它會將單箇中斷轉換爲雙中斷。

最終的結果將是一個textarea,其實際上不可能進入一條新線與兩條線。

+2

所以,你想換行或'\ n \ N'? –

+0

@ ling.s會是'\ n \ n' – Ryan

回答

0

我無法清楚地理解你在找什麼。下面是增加了兩個休息

$('#textareaid').keyup(function() { 
    $('#divid').html($(this).val().replace(/\n/g,'<br/><br/>')); 
}); 

的例子Fiddle如果你想添加\n\n上輸入按鍵試試這個

$('#textareaid').keypress(function(event) { 
if (event.which == 13) { 
event.preventDefault(); 
var s = $(this).val(); 
$(this).val(s+"\n\n"); 
} 
});​ 
+0

由於某些原因,'/ \ n/g'匹配已存在的雙重新行並導致很多'\ n'因此,我如何使它匹配一個'\ n'只在一行中? – Ryan

0
$('#textbox').keyup(function (e) { 
if (e.keyCode == 13) { 
    $("#textbox").append("\n\n"); 
} 
}); 

它檢查,看看你的點擊進入,然後它會在文本框的末尾添加兩個\ n。鑑於你的textarea被稱爲文本框。

1

試試這個http://jsfiddle.net/psXn5/

// main code 
function replaceLineBreak() { 
    // save caret position 
    var caret = $(this).caret(); 
     text = $(this).val(); 

    // adjust caret position 
    var linebreak = text.match(/\n/g); 
    if (linebreak != null) { 
     caret += linebreak.length * 3 
    } 

    $(this).val(text.replace(/\n/g, "\\n\\n")); 

    // restore caret position 
    $(this).caret(caret); 
} 

// update on change 
$('textarea').change(replaceLineBreak); 

// update on key up 
$('textarea').keyup(replaceLineBreak); 
+0

非常感謝Wing,但是這個工作幾乎奏效,因爲某些原因它會打印'\ n \ n'而不是真正的新行。 (我在Windows上) – Ryan

+0

@Jeff這不是我的答案,而是嘗試將'text.replace(/ \ n/g,「\\ n \\ n」)'改爲'text.replace(/ \ n/g ,「\ n \ n」)' – Tafari

+0

哦,我想我是誤解= 3 =。 如果是這樣,我認爲不可能更新。它會替換您按下某個鍵的所有類型。 或者它可能只有最多2個換行符? –