layui使用富文本已经使用第三方插件Kz.layedit来优化layui的富文本

layui提供的精简的富文本

如果你正苦苦寻找一款轻量的Web富文本编辑器,那么LayEdit会是你不错的选择。

1.根据官方文档提供的layedit

   layui.use('layedit', function(){
        var layedit = layui.layedit;
        /**
         *layedit的上传图片
         */
        layedit.set({
            uploadImage: {
                url:  '/upload/layuiUploadOne' //接口url
                ,type: 'post' //默认post
            }
        });
        layedit.build('demo', {
            height: 500 //设置编辑器高度
        });

    });

效果如下:

 官方文档说的很清楚,简易的富文本使用layui提供的的确十分方便,但是缺少的元素很多。像什么标题,元素,等简单的都没有。小编我当初页为此苦恼啊。临时换富文本,成本太高了。幸好发现了大牛在layedit基础上改编的富文本;

2.使用第三方插件丰富layui的富文本

    <!--富文本需要的链接-->
    <link href="/Kz.layedit/Content/Layui-KnifeZ/css/layui.css" rel="stylesheet"/>
    <script src="/Kz.layedit/Content/Layui-KnifeZ/layui.js"></script>
    <script src="/Kz.layedit/Content/ace/ace.js"></script>

前段页面:

<div style="width: 1000px;height: 700px;margin: 0px auto;">
    <form class="layui-form"> <!-- 提示:如果你不想用form,你可以换成div等任何一个普通元素 -->
        <div class="layui-form-item">
            <label class="layui-form-label">活动首图</label>
            <div class="layui-input-inline">
                <input id="activeLogo" type="text" name="activeLogo" style="display: none;">
                <button type="button" class="layui-btn" id="uploadImage"><i class="layui-icon"></i>更换图片</button>
                <div class="layui-upload-list">
                    <img class="layui-upload-img" height="100px" width="100px" id="showImage">
                    <p id="demoText"></p>
                </div>
            </div>
            <label class="layui-form-label">活动简介</label>
            <div class="layui-input-inline">
                <textarea style="height: 150px;resize: none;" name="introduction" placeholder="请输入活动简介内容"
                          class="layui-textarea"></textarea>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">头标题1</label>
            <div class="layui-input-inline">
                <input type="text" name="headTitle1" lay-verify="required" placeholder="请输入" autocomplete="off"
                       class="layui-input">
            </div>
            <label class="layui-form-label">头标题2</label>
            <div class="layui-input-inline">
                <input type="text" name="headTitle2" lay-verify="required" placeholder="请输入" autocomplete="off"
                       class="layui-input">
            </div>
            <label class="layui-form-label">内容标题</label>
            <div class="layui-input-inline">
                <input type="text" name="title" lay-verify="required" placeholder="请输入" autocomplete="off"
                       class="layui-input">
            </div>
        </div>

        <div class="layui-form-item">
            <label class="layui-form-label">开始时间</label>
            <div class="layui-input-inline">
                <input type="text" id="startTime" placeholder="yyyy-MM-dd HH:mm:ss" name="startTime"
                       lay-verify="required" placeholder="请输入" autocomplete="off"
                       class="layui-input">
            </div>
            <label class="layui-form-label">结束时间</label>
            <div class="layui-input-inline">
                <input type="text" id="overTime" placeholder="yyyy-MM-dd HH:mm:ss" name="overTime" lay-verify="required"
                       placeholder="请输入" autocomplete="off"
                       class="layui-input">
            </div>
            <label class="layui-form-label">人数上限</label>
            <div class="layui-input-inline">
                <input type="text" name="registrationCeilingNumber" lay-verify="required" placeholder="请输入"
                       autocomplete="off"
                       class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">活动内容</label>
            <div class="layui-input-block">
                <textarea id="demo" lay-verify="content" name="matchContent" style="display: none;"></textarea>
            </div>
        </div>
        <br>
        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="addActive">立即提交</button>
            </div>
        </div>
        <!-- 更多表单结构排版请移步文档左侧【页面元素-表单】一项阅览 -->
    </form>

</div>

js页面代码:

<script type="text/javascript">
    layui.use(['form', 'layedit', 'upload', 'laydate'], function () {
        var form = layui.form;
        var layedit = layui.layedit;
        var laydate = layui.laydate;
        var $ = layui.$;
        var upload = layui.upload;


        //普通图片上传
        var uploadInst = upload.render({
            elem: '#uploadImage'
            , url: '/upload/layuiUploadOne'
            , before: function (obj) {
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#showImage').attr('src', result); //图片链接(base64)
                });
            }
            , done: function (res) {
                //如果上传失败
                if (res.code > 0) {
                    return layer.msg('上传失败');
                }
                $("#activeLogo").val(res.data.src);
                //上传成功
                return layer.msg('图片上传成功!');
            }
            , error: function () {
                //演示失败状态,并实现重传
                var demoText = $('#demoText');
                demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
                demoText.find('.demo-reload').on('click', function () {
                    uploadInst.upload();
                });
            }
        });


        //自定义日期格式
        var myDate = new Date();
        laydate.render({
            elem: '#startTime',
            type: 'datetime'
        });
        laydate.render({
            elem: '#overTime',
            type: 'datetime'
        });
        //上传图片
        layedit.set({
            uploadImage: {
                url: '/upload/layuiUploadOne'
                , type: 'post' //默认post
            }
            ,
            devmode: true
            //是否自动同步到textarea
            , autoSync: true
            //内容改变监听事件
            , onchange: function (content) {
                console.log(content);
            }
            //插入代码设置 --hide:false 等同于不配置codeConfig
            , codeConfig: {
                hide: true,  //是否隐藏编码语言选择框
                default: 'javascript', //hide为true时的默认语言格式
                encode: true //是否转义
                , class: 'layui-code' //默认样式
            }
            , facePath: 'http://knifez.gitee.io/kz.layedit/Content/Layui-KnifeZ/'
            , devmode: true
            , videoAttr: ' preload="none" '
            , tool: [
                'html', //显示富文本源码
                'undo', //撤销
                'redo',//重做
                'code', //代码
                'strong',//加粗
                'italic', //斜体
                'underline', //下划线
                'del', //删除线
                'addhr', //水平线
                '|',
                'removeformat', //清楚文字样式
                'fontFomatt',//段落格式
                'fontfamily',//字体
                'fontSize', //字体大小
                'fontBackColor',//字体背景色
                'colorpicker',//字体颜色
                'face',//表情
                '|',
                'left', //左对齐
                'center', //居中
                'right', //右对齐
                '|',
//              'link', //链接
//              'unlink', //清除链接
//              'images', //多图上传
                'image_alt', //图片alt
//              'video',//视频
//              'attachment',//插入附件
//              'anchors'//添加锚点
                , '|'
                , 'table',//表格
                'customlink'//自定义链接
                , 'fullScreen',//全屏
                'preview'//预览
            ]
        });
        var index = layedit.build('demo', {
            height: 300 //设置编辑器高度,
        });//建立编辑器
        //将编辑器内容同步到textarea中
        layedit.sync(index);
        form.verify({
            content: function (value) {
                return layedit.sync(index);
            }
        });

        form.on('submit(addActive)', function (data) {
            console.log(data.field);//当前容器的全部表单字段,名值对形式:{name: value}
            return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
        });
    });
</script>

效果图:

有啥不懂得小伙伴们加群交流啦:852665736;本群致力于一同进步的小伙伴们,大家一起交流探讨,在陌生的城市感受温暖; 

无偿免费分享源码以及技术和面试文档,更多优秀精致的源码技术栈分享请关注微信公众号:gh_817962068649 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值