2015-02-10 84 views
2

我想自動添加一個新行,每10個字符與此代碼打破:添加換行符每x個字符(使用jquery /角)

HTML:

<div ng-app=""> 
    <textarea id="chat" ng-model="msg"></textarea> 
    <span class="msg" ng-bind="msg"></span> 
</div> 

當然當我輸入在textarea中的東西,它出現在跨度下面。但我希望它能像每十個字符有一個換行符一樣工作。

我已經試過:

JQuery的:

var n = $('#chat').val().length; 
if (n%10 == 0 && n > 0) { 
    $('.msg').append('<br>'); 
} 

和許多其他的東西像 '\ n' 取代< BR>,.append與.appendTo,但無論我嘗試,文本在跨度中出現的只是一行。我也嘗試過我在這個網站上找到的解決方案,比如用「white-space:pre」來設計跨度。或使用< pre> ... </pre>。我想提一下,我是一個AngularJS的新手。

回答

1

If是不是要去工作,你通過這樣

$("#chat").keyup(function(){ 
    var msg = $(this).val(); 
    var span_msg=''; 
    for(var i=0; i<msg.length; i++) 
     span_msg+=msg[i]+(i==10?"<br>":""); 
    $('.msg').html(span_msg); 
    }); 
+0

精彩,它的工作!我只需要添加一個'$('。msg')。html(span_msg);'後面的,謝謝:) – Minimus 2015-02-10 20:23:40

+0

是的,我忘了。 :) – void 2015-02-10 20:26:17

0

角方式文本具有循環:

篩選:

app.filter('addBr', function($sce){ 

    return function(input, length) { 

     return $sce.trustAsHtml(input.match(new RegExp(".{1," + length + "}", 'g')).join("<br/>")); 

    }; 
}); 

控制器:

$scope.test = "Professional lorem ipsum generator for typographers"; 

查看:

<div ng-bind-html="test | addBr: 20"> </div> 

我希望這會工作,對我來說它的作用。