2016-04-04 2 views
2

Я использую ткань js. Сегодня я столкнулся с этим вопросом «Как проверить текст fabricjs на несколько строк?». Пожалуйста, помогите мне в этом. Заранее спасибо.Как проверить textjs текст многострочный?

+0

Какой код вы пробовали? См. [Как спросить] (http://stackoverflow.com/help/how-to-ask) и создайте [Минимальный, Полный и Подтверждаемый пример] (http://stackoverflow.com/help/mcve). – tmthydvnprt

ответ

3

fabricjs текст имеет свойство _textLines. если текст имеет многострочную линию, это свойство добавляет каждую строку в виде массива. Поэтому мы можем использовать это для проверки.

var canvas = window._canvas = new fabric.Canvas('c'); 
 

 
$('#multi').click(function(){ 
 
\t canvas.clear(); 
 
    var text = new fabric.Text('Hai this is\nmulti line\nHello World', {}); 
 
    canvas.add(text); 
 
    $('#check').removeAttr('disabled') 
 
}) 
 
$('#single').click(function(){ 
 
\t canvas.clear(); 
 
    var text = new fabric.Text('Hai this is single line Hello World', {}); 
 
    canvas.add(text); 
 
    $('#check').removeAttr('disabled') 
 
}) 
 
$('#check').click(function(){ 
 
\t console.log(canvas.getObjects()[0]._textLines.length) 
 
    check = canvas.getObjects()[0]._textLines.length; 
 
\t if(check>1){ 
 
    \t alert("hey this is multi line text") 
 
    } 
 
    else if(check==1) 
 
    { 
 
    \t alert("hey this is single line") 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<canvas id="c" width="400" height="100"></canvas> 
 
<button id="multi">add multi line text 
 
</button> 
 
<button id="single">add single line text 
 
</button> 
 
<button id="check" disabled="">check 
 
</button>

+0

@Mullainathan, если этот ответ полезен для вас, пожалуйста, проверьте приемлемый знак галочки ответа. Потому что это поможет другим также. :-) –

+2

будьте осторожны, что _textLines является частной собственностью. Он инициализируется сразу после рендеринга. если вы пропустите часть canvas.add, это не сработает. – AndreaBogazzi

1

я бы просто проверить, если текст может быть разделен символами новой строки.

var myText = new fabric.Text('Hai this is single line Hello World', {}); 
var multiline = myText.text.split('\n').length > 1 ? true : false; 
+0

'split (/ \ n \ r | \ n | \ r /)' охватывает все базы, Mac и Windows и Linux. См .: https://danielmiessler.com/study/crlf/ –