0

在文本区域的更改事件中,我想更改已经在画布上绘制的文本。以下我编写的代码,使用 if/else 条件我正在删除之前添加的文本 .remove 在这里无法完美运行。文本更改后,如果我将文本拖动到某处然后文本更改为已删除的第一个文本会有什么问题?

$('#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;

    }
}
4

1 回答 1

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();
});
于 2013-08-27T11:42:56.800 回答