2015-11-03 138 views
1

我需要在我的textarea中防止附加換行符。我在我的密碼功能中使用以下內容來防止這種情況發生。防止鍵盤斷線

$('textarea#tt').val($('textarea#tt').val().replace(/^(\r\n)|(\n\n)/,'')); 

但是,如果用戶持有輸入密鑰,它不會按預期方式工作。我怎樣才能解決這個問題?例如

防止

The brown 
      //additional line space 
kettle 
      //additional line space 
      //additional line space 

預計

The brown 
kettle 
+0

你的'regex'只替換第一次出現,並且只有當它出現在輸入的開頭,而不是其他地方時,才替換'\ r \ n',而對於雙'\ n \ n'你不檢查對於'\ r \ n \ r \ n'類。這是全部意圖嗎?如果用戶複製/粘貼輸入中的文本有很多這樣的中斷,該怎麼辦? – trincot

+0

我更新了我的答案,假設您希望所有雙行換行符被單行換行符替代,並且應該刪除任何初始換行符。 – trincot

回答

1

你必須把以同樣的方式在keypress事件,你甚至可以添加​​事件以及:

$('textarea#tt').bind('keypress keyup keydown', function (e) { 
    $(this).val($(this).val(). 
     replace(/^(\n|\r\n)+/, ''). 
     replace(/(\n|\r\n){2,}/g, '\n')); 
}); 

請注意,我也修改了regex

  • 無論是\n還是\r\n;
  • 它用一個替換雙(三,...)換行符;
  • 使用g修飾符它將替換所有的事件。這在用戶將長文本粘貼到textarea時可能需要多次換行符的情況下才需要;
  • 刪除任意數量的初始換行符。