2013-08-27 69 views
0

關於更改事件的文本區域我想更改已在畫布上繪製的文本。下面的代碼我已經寫了,使用if/else條件我刪除了以前添加的文本.remove在這裏並不完美。文本更改後,如果我拖動文本的地方,然後文本更改爲第一個已被刪除會是什麼問題?刪除以前添加的畫布文本與fabric.js

$('#filedset').delegate(' textarea', 'change ', function() { 
    var canvas = new fabric.Canvas('design_text'); 
    if (x == 0) { 
     alert('if called'); 

     var message = $(this).val(); 

     console.log('text area change' + message); 
     var text = new fabric.Text(message, { 
      left: 150, 
      top: 60 
     }); 
     canvas.remove(text1); 
     canvas.add(text); 
     x = 1; 
    } else { 
     alert('else called'); 

     var message = $(this).val(); 

     console.log('text area change' + message); 
     var text1 = new fabric.Text(message, { 
      left: 150, 
      top: 60 
     }); 
     canvas.remove(text); 
     canvas.add(text1); 
     x = 0; 

    } 
} 
+0

你究竟想要什麼?實際上,您每次更改文本時都會創建一個新的fabric.Canvas實例。它是否正確? 也許text.setText('jkasjdalksj');你在找什麼?! – Kienz

+0

@Kienz是的,我想設置文本值?我可以在這裏使用設置文本方法嗎? – anam

回答

2

當然可以。我創建了小jsfiddle:http://jsfiddle.net/Kienz/BTh6A/

var canvas = new fabric.Canvas('design_text'); 

$('#filedset').on(' textarea', 'change ', function(e) { 
    var obj = canvas.getActiveObject() || canvas.item(0), 
     text = e.target.value; 

    if (!obj || obj.type !== 'text') return; 

    obj.setText(text); 

    canvas.renderAll(); 
}); 
+0

var canvas = window._canvas = new fabric.Canvas('c'); WINDOW._CANVAS意味着什麼? – anam

+0

我使用它來訪問(開發人員控制檯)在jsfiddle中的畫布對象。否則你不需要那個。 – Kienz

+0

我更新了小提琴http://jsfiddle.net/BTh6A/3/以增加font_size與相同的設置方法...它不工作? – anam