2012-03-15 55 views
0

我有一个用于表单提交的纯文本区域。当按下ENTER时我想强制换行。现在我可以在输入时识别它,例如keyCode 13被按下。但是,它不会在输出的html中添加换行符。这是如何完成的,如果是这样,那么<br /><br />将如何被用户隐藏。谢谢当输入被按下时,jQuery换行符不会被追加

<textarea cols="50" rows="7" id="textarea"></textarea> 

    <p><div id="data"></div></p> 


    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 

    <script type="text/javascript"> 

     $('#textarea').bind('keyup', function(e) { 

      data = $('#textarea').val() 
      $('#data').html(data); 

      if(e.keyCode==13){ 
       $('#data').append('<br/><br />'); // <--- This won't work 
       } 

     }); 

    </script> 
+0

文字区域已经默认做到这一点,你只需要以''
标签更换新行字符当显示为HTML。 – 2012-03-15 17:53:23

+0

你试过'\ n'吗?并在textarea上设置包装? – mplungjan 2012-03-15 17:53:41

+1

它正在工作,但它被下一次按键击倒。你想用它替换'\ n'。 – 2012-03-15 17:54:43

回答

6

试试这个:

$('#textarea').bind('keyup', function(e) { 
    var data = $('#textarea').val(); 
    $('#data').html(data.replace(/\n/g,"<br />")); 
}); 

DEMO:http://jsfiddle.net/efLxP/

+0

太棒了!这样可行 – Graham 2012-03-15 17:56:32

0

首先,如果你要打印内部<p>标签数据,使用<span>代替<div>。为了解决你的问题,试试这个:

$('#textarea').bind("keydown", function(event) { 
    var keycode = (event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode)); 

    data = $('#textarea').val() 

    $('#data').html(data); 

    if (keycode == 13) { 
     $('#data').html(data.replace(/\n/g,"<br />")); 
     return false; 
    } 
}); 
相关问题