不同的tab页加载 富文本编辑器的问题

提问 未结
8 900
缒風
缒風 2017-3-15
悬赏:5飞吻
在创建第一个tab页的时候,同时初始化一个富文本编辑器;同理,创建第二个tab页的时候,也是初始化一个富文本编辑器;可以问题出现了,在创建一个tab页的时候,没有加载出来富文本编辑器,在创建第二个tab页的时候,加载出了富文本编辑器;这个时候在点击第一个tab页的时候 也出现了,本人怀疑是初始化富文本编辑的问题,可是找不到解决方案,请教哪位大神给解决一下。
回帖
  • 我估计是 你把两个编辑器的Id属性设置成一样的了!tab页是同一个页面,同一个页面不能存在Id相同的元素!
    0 回复
  • 缒風
    2017-3-15
    @Absolutely 富文本的ID值是不同的,这个我已经设置过了,不同的tab页加载富文本编辑器的ID是不同的
    0 回复
  • @缒風 我觉得你应该把代码贴出来!
    0 回复
  • 缒風
    2017-3-15
    补充代码://动态创建tab页
    function CreateTab(obj) {

    var element = layui.element();
    //动态创建tab页
    element.tabAdd('content-filter', {
    title: '与会员' + obj.Name + '聊天中..'
    , content: contentHtml(obj.Id) //参数客户Id
    , id: obj.Id //'选项卡标题的lay-id属性值'
    });

    //初始化富文本编辑器
    layedit(obj.Id);
    }
    function layedit(Id){
    layui.use('layedit', function () {
    var layedit = layui.layedit;
    var Message = layedit.build('txt_'+Id,
    {
    height: 100,
    tool: [
    'face' //表情
    , 'image' //插入图片
    ]
    }); //建立编辑器
    alert(Message);
    });
    }
    0 回复
  • 缒風
    2017-3-15
    @Absolutely 代码已经补充上了
    0 回复
  • @缒風 我估计是这样的: 你CreateTab()里面执行layedit(Id),但是这个时候你的tab内容并没有加载出来,所以执行layedit(Id)这个的时候,就找不到对应Id的textarea! 但是这样也说不太通,不过我建议你把加载编辑器的方法写在 content: contentHtml(obj.Id) contentHtml里面!
    0 回复
  • 缒風
    2017-3-15
    @Absolutely 这样也是不行的,在执行tab 页 的时候已经加载出来了HTML 标签了,这个时候调用 富文本编辑器 按照逻辑是没有问题的;文档也是这样说的,在加载富文本编辑器的时候,先初始页面然后调用初始富文本编辑器。从我这个问题上看应该是初始化的顺序不对。唉 就是找不到原因。
    0 回复
  • 缒風
    2017-3-15
    该问题目前已经解决,就是tab 页 class 缺少一个属性:'layui-show' ; $("#item_"+obj.Id).parents('div') .addClass('layui-show'); 解决方案:添加上这个属性问题解决了;但是这种解决方法有些不太好,哪位大神有更好的解决方案,请回复 谢谢
    0 回复