相信很多小伙伴在初次使用layer+UEditor 会出现一些问题,
比如
1·在弹框中UEditor 的字体大小和颜色等等没办法修改,
2·因为没有name属性而需要使用别的方法进行获取值,进行提交
3·使用ajax从数据库中读取数据对UEditor 赋值以及重新赋值
下面一一把我的方法写出来
1.在弹框中UEditor 的字体大小和颜色等等没办法修改,
这个问题其实是layer的zIndex的优先级太高,而使UEditor 的下拉框无法显示
解决办法
layer.open({
title: '修改服务信息',
type: 1,
skin: 'layui-layer-rim', //加上边框
area: ['820px', '640px'], //宽高
content: $('#tancenguplo'),
//层优先级,
zIndex:1000
});
给弹出层加上zIndex:1000这个值,然后修改ueditor.config.js中zIndex的值,在64行,默认是注释掉的,改为zIndex : 20000000
2·因为没有name属性而需要使用别的方法进行获取值,进行提交
当需要提交表单时因为UEditor没有name属性,所以就需要使用别的方法进行获取到值,我是这样写的
var ue = UE.getEditor('editor'); //实例化编辑器
form.on('submit(add)', function(data){
var content = null;
ue.ready(function() {
//获取html内容
content = ue.getContent();
});
$.ajax({
})
return false;
});
$.ajax中写你的参数,其中UEditor的html值可以直接使用content
3·使用ajax从数据库中读取数据对UEditor 赋值,以及重新赋值
后台处理:当我们使用ajax回调函数,需要对UEditor赋值从数据库中读取的值时,需要在php中对数据库中的值进行转义。使用htmlspecialchars_decode,代码如下,可根据自身项目实际,进行修改
$succ_data['content'] = htmlspecialchars_decode($succ_data['content']);
前台处理:数据得到后就需要进行赋值,代码如下
//先定义两个全局变量
var ue2 = null;
var content = null;
//弹出层:修改信息
$(".mybtn2").on('click',function(){
var id = $(this).attr("id");
$.ajax({
url:"",
data:{
},
success:function(e){
//对数据进行格式转换
var e = JSON.parse(e)
//获取对UEditor赋值的值
content = e.content
//实例化编辑器
ue2 = UE.getEditor('editor2');
ue2.ready(function() {
//对编辑器进行赋值
ue2.setContent(content);
})
form.val("formuplo",{
})
layer.open({
title: '',
type: 1,
skin: 'layui-layer-rim', //加上边框
area: ['820px', '640px'], //宽高
content: $('#tancenguplo'),
//层优先级,
zIndex:1000
});
}
})
})
之所以将content定义到全局变量,是为了每次关闭弹框再打开时都会重新赋值。
希望对大家有所帮助
end;