Fabric JS-不要在画布上添加两个以上的文本区域

杰科姆

在我的使用Fabric js 4.3.1的项目中,我试图设置将文本添加到画布的限制。我的目标是增加2个文本,每个文本区域一个。

这是我现在的代码,但是效果不佳,因为每次我在textarea中编写文本时,都会无限制地在彼此之间添加一个文本...

var canvas = this.__canvas = new fabric.Canvas('canvas');

$(function() {
            
            canvas.setHeight('300');
      canvas.setWidth('800');
      canvas.renderAll();
      
      fabric.Object.prototype.transparentCorners = false;
            fabric.Object.prototype.padding = 5;
            
            
            
            var textOptions = { 
              fontSize:16, 
              left:20,
              top:20, 
              radius:10, 
              borderRadius: '25px', 
              hasRotatingPoint: true 
            };
      
      var textOptions2 = { 
              fontSize:16, 
              left:20,
              top:50, 
              radius:10, 
              borderRadius: '25px', 
              hasRotatingPoint: true 
            };


            //TEXT 1
            $( "#AddTextCust" ).keyup(function() {
            var textObject = new fabric.IText($("#AddTextCust").val(), textOptions);
            if($.trim($(this).val()).length > 0){
            canvas.add(textObject);
            canvas.renderAll();
      }
            });

            document.getElementById('AddTextCust').addEventListener('keyup', function () {
              canvas.getActiveObject().text = document.getElementById('AddTextCust').value;
              canvas.renderAll();
            });
      
      
      //TEXT 2
      $( "#AddTextCust2" ).keyup(function() {
            var textObject = new fabric.IText($("#AddTextCust2").val(), textOptions2);
            if($.trim($(this).val()).length > 0){
            canvas.add(textObject);
            canvas.renderAll();
      }
            });

            document.getElementById('AddTextCust2').addEventListener('keyup', function () {
              canvas.getActiveObject().text = document.getElementById('AddTextCust2').value;
              canvas.renderAll();
            });
      
      
      
      });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.3.1/fabric.min.js"></script> 

<div id="contCanvasLogo" style="float:left;width:100%;">
 <canvas id="canvas" class="resize canvasLogo" style="width:500px;height:500px;border:1px solid #ccc;"></canvas>
 </div>
 
 <textarea id="AddTextCust" rows="3" cols="20"></textarea>
 <textarea id="AddTextCust2" rows="3" cols="20"></textarea>

如何设置此添加文本限制?

牛ob

您将IText在每个keyup事件添加一个新对象结果,结构正在渲染多个文本片段。(您还具有多个keyup事件处理程序,对同一对象执行大致相同的操作。)

您的原始代码:

            //TEXT 1
            $( "#AddTextCust" ).keyup(function() {
            var textObject = new fabric.IText($("#AddTextCust").val(), textOptions);
            if($.trim($(this).val()).length > 0){
            canvas.add(textObject);
            canvas.renderAll();
      }
            });

            document.getElementById('AddTextCust').addEventListener('keyup', function () {
              canvas.getActiveObject().text = document.getElementById('AddTextCust').value;
              canvas.renderAll();
            });

与其添加新IText对象,不如创建一个并对其进行更新。(此外,删除keyup事件处理程序之一):

            //TEXT 1
            const $addTextCust = $('#AddTextCust');
            const textObject = new fabric.IText($addTextCust.val(), textOptions);
            canvas.add(textObject);

            $addTextCust.keyup(function() {
              textObject.text = $addTextCust.val();
              canvas.renderAll();
            });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Fabric.js中彼此重叠的两个画布

来自分类Dev

画布旋转 - Fabric js

来自分类Dev

Fabric.js在画布上的图像上分层文本

来自分类Dev

Fabric.js画布上的GIF动画

来自分类Dev

无法在画布上添加新对象(fabric.js)

来自分类Dev

Fabric.js中同时绘制两个对象

来自分类Dev

Fabric.js画布图像抗锯齿

来自分类Dev

在Fabric.js中全屏显示画布

来自分类Dev

缩放fabric.js画布对象

来自分类Dev

Fabric.js画布混合模式

来自分类Dev

保存用fabric.js创建的画布

来自分类Dev

使用fabric.js的全屏画布模式

来自分类Dev

Fabric.js支持的文本更改事件

来自分类Dev

Fabric.js文本宽度被忽略

来自分类Dev

Fabric.js动态添加/删除元素

来自分类Dev

Fabric.js添加图片顺序

来自分类Dev

使用fabric.js从矩形区域获取对象并将其绘制到画布上

来自分类Dev

使用fabric.js从矩形区域获取对象并将其绘制到画布上

来自分类Dev

在fabric js上实现撤消重做时,图像消失但在点击画布区域时出现

来自分类Dev

使用Fabric.js选择画布上的所有对象

来自分类Dev

使用fabric.js在画布上免费绘制

来自分类Dev

如何在画布上更改SVG颜色-Fabric.js

来自分类Dev

SVG无法使用Fabric.js在画布上正确渲染

来自分类Dev

使用fabric.js更改画布上的绘图光标

来自分类Dev

如何在画布内的Fabric JS图像上添加文本框弹出窗口(jQuery工具提示或类似内容)?

来自分类Dev

在画布HTML5和Fabric js中的图像上添加删除图标

来自分类Dev

如何在Fabric JS中的画布的一个角添加删除图标功能?

来自分类Dev

在Canvas Fabric JS中的元素上添加删除按钮

来自分类Dev

如何使用Fabric.js实现画布平移

Related 相关文章

热门标签

归档