主题: 调用单独批量上传后。再把图片插入大编辑器。提示错误。
作者: 小浪子, 发布日期: 2012-10-09 08:54:01, 浏览数: 3429
首先是可以获取到编辑器的对象的。
函数代码:
function UpLoadMulti(Path, UpLoadId, DispId, ObjEditor, En, Es) {
    var UpLoadJsonUrl, StrTemp, StrRnd;
    UpLoadJsonUrl = Path + 'Inc/UpLoad.Asp?Action=SaveLoadMain&smode=1&sdir=' + UpLoadId;
    var EditorUpLoad = KindEditor.editor({
        allowFileManager: true,
        uploadJson: UpLoadJsonUrl
    });
    EditorUpLoad.loadPlugin('multiimage',
    function() {
        EditorUpLoad.plugin.multiImageDialog({
            clickFn: function(urlList) {
                var MakePic;
                KindEditor.each(urlList,
                function(i, data) {
                    StrTemp = '';
                    StrRnd = '';
                    StrRnd = genRandNumber(10000, 999999);
                    if (data.ThumbPic != '') {
                        MakePic = data.ThumbPic;
                    } else {
                        MakePic = data.url;
                    }
                    StrTemp += '<li id="n' + StrRnd + '">';
                    StrTemp += '<img src="' + MakePic + '" />';
                    StrTemp += '<p>';
                    StrTemp += '<input name="UpImagesUrl" type="hidden" value="' + data.url + '" />';
                    StrTemp += '<input name="UpImagesTitle" type="text" style="width:110px;" /><br />';
                    StrTemp += '<a href="javascript:void(0);" onclick="RemoveImages(\'n' + StrRnd + '\',\'../\',\'' + data.url + '\');return false;">删除</a> ';
                    StrTemp += '<a href="javascript:void(0);" onclick="InValue(\'ImageUrl\',\'' + data.url + '\');return false;">设为封面</a>';
                    if (ObjEditor != '' && ObjEditor != null) {
                        alert(MakePic + '|' + ObjEditor); //可以获取到编辑器的对象和值,如:/UpLoadPic/Pro/Images/20121009085085868586s.jpg|[object Object]
                        //似乎提示下面错误, 缺少 ']'
                        StrTemp += '<br /><a href="javascript:void(0);" onclick="InEditorVal(' + ObjEditor + ',\'' + MakePic + '\',1);return false;">插入到编辑器</a>';
                    }
                    StrTemp += '</p>';
                    StrTemp += '</li>';
                    $('#' + DispId).append(StrTemp);
                });
                EditorUpLoad.hideDialog();
            }
        });
    });
}

function InEditorVal(ObjEditor, Value, IsPic) {
    if (Value != '' && Value != null) {
        if (IsPic = 1) {
            ObjEditor.insertHtml('<img src="' + Value + '" border="0" />');
        } else {
            ObjEditor.insertHtml(Value);
        }
    }
}

 

调用:UpLoadMulti('../',4,'imageView',editor,0,0);
图片可以上传,图片可以插入到:ImageUrl的元素里面,就是不能插入到编辑器。

再说明。是可以获取到编辑器的对象的。通过函数传递的:editor

错误提示。应该写在函数里的注释了。
老大帮忙看下。如何解决。

作者: Roddy, 发布日期: 2012-10-09 10:35:57

ObjEditor是object,不能拼接字符串的。建议用K('#btn').click()绑定。

回复
作者: 小浪子, 发布日期: 2012-10-09 11:59:01
回复Roddy:但是这样调用很方便。如果是你说的那样。应该怎么写呢?
回复
作者: Roddy, 发布日期: 2012-10-09 12:16:19
回复小浪子:

StrTemp += '<br /><a href="javascript:void(0);" id="J_insertToEditor">插入到编辑器</a>';


$('#' + DispId).append(StrTemp);以后


K('#J_insertToEditor').click(function() {

    InEditorVal(ObjEditor,  MakePic, 1);

});

回复
作者: 小浪子, 发布日期: 2012-10-09 13:22:02
回复Roddy:
function UpLoadMulti(Path, UpLoadId, DispId, ObjEditor, En, Es) {
    var UpLoadJsonUrl, StrTemp, StrRnd;
    UpLoadJsonUrl = Path + 'Inc/UpLoad.Asp?Action=SaveLoadMain&smode=1&sdir=' + UpLoadId;
    var EditorUpLoad = KindEditor.editor({
        allowFileManager: true,
        uploadJson: UpLoadJsonUrl
    });
    EditorUpLoad.loadPlugin('multiimage',
    function() {
        EditorUpLoad.plugin.multiImageDialog({
            clickFn: function(urlList) {
                var MakePic;
                KindEditor.each(urlList,
                function(i, data) {
                    StrTemp = '';
                    StrRnd = '';
                    StrRnd = genRandNumber(10000, 999999);
                    if (data.ThumbPic != '') {
                        MakePic = data.ThumbPic;
                    } else {
                        MakePic = data.url;
                    }
                    StrTemp += '<li id="n' + StrRnd + '">';
                    StrTemp += '<img src="' + MakePic + '" />';
                    StrTemp += '<p>';
                    StrTemp += '<input name="UpImagesUrl" type="hidden" value="' + data.url + '" />';
                    StrTemp += '<input name="UpImagesTitle" type="text" style="width:110px;" /><br />';
                    StrTemp += '<a href="javascript:void(0);" onclick="RemoveImages(\'n' + StrRnd + '\',\'../\',\'' + data.url + '\');return false;">删除</a> ';
                    StrTemp += '<a href="javascript:void(0);" onclick="InValue(\'ImageUrl\',\'' + data.url + '\');return false;">设为封面</a>';
                    if (ObjEditor != '' && ObjEditor != null) {
                        StrTemp += '<br /><a href="javascript:void(0);" id="J_insertToEditor">插入到编辑器</a>';
                    }
                    StrTemp += '</p>';
                    StrTemp += '</li>';
                    $('#' + DispId).append(StrTemp);
                    $('#J_insertToEditor').click(function() {
                        InEditorVal(ObjEditor, MakePic, 1);
                    });
                });
                EditorUpLoad.hideDialog();
            }
        });
    });
}

不行啊。总是插入的最后一张图片。而且只有点第1张和最后一张的图片下的插入到编辑器才有效。

总是插入的最后一张图片的地址
回复
作者: Roddy, 发布日期: 2012-10-09 13:25:47
function(i, data) {
	StrTemp = '';
	StrRnd = '';
	StrRnd = genRandNumber(10000, 999999);
	if (data.ThumbPic != '') {
		MakePic = data.ThumbPic;
	} else {
		MakePic = data.url;
	}
	StrTemp += '<li id="n' + StrRnd + '">';
	StrTemp += '<img src="' + MakePic + '" />';
	StrTemp += '<p>';
	StrTemp += '<input name="UpImagesUrl" type="hidden" value="' + data.url + '" />';
	StrTemp += '<input name="UpImagesTitle" type="text" style="width:110px;" /><br />';
	StrTemp += '<a href="javascript:void(0);" onclick="RemoveImages(\'n' + StrRnd + '\',\'../\',\'' + data.url + '\');return false;">删除</a> ';
	StrTemp += '<a href="javascript:void(0);" onclick="InValue(\'ImageUrl\',\'' + data.url + '\');return false;">设为封面</a>';
	if (ObjEditor != '' && ObjEditor != null) {
		StrTemp += '<br /><a href="javascript:void(0);" class="J_insertToEditor" data-pic="' + MakePic + '">插入到编辑器</a>';
	}
	StrTemp += '</p>';
	StrTemp += '</li>';
	$('#' + DispId).append(StrTemp);
});

$('.J_insertToEditor').click(function() {
	InEditorVal(ObjEditor, $(this).attr('data-pic'), 1);
});
回复小浪子:
回复
作者: 小浪子, 发布日期: 2012-10-09 13:36:00

回复Roddy:点击:插入到编辑器还是木有反应。。

 

另外。我的上传。不能在火狐下上传啊。所以没法在火狐下调试。哎

回复
作者: 小浪子, 发布日期: 2012-10-09 13:39:21
回复小浪子:
$('.J_insertToEditor').click(function() {
	alert(ObjEditor);
	alert($(this).attr('data-pic'));
    InEditorVal(ObjEditor, $(this).attr('data-pic'), 1);
});
无法弹出信息。我用IE8的开发者工具查看。可以看到每个:
'data-pic'的值
回复
作者: Roddy, 发布日期: 2012-10-09 14:25:09
回复小浪子:A标签的ID改成class了吗?
回复
作者: 小浪子, 发布日期: 2012-10-09 14:46:33
回复Roddy:改了啊。我是直接复制你的那个段代码
function UpLoadMulti(Path, UpLoadId, DispId, ObjEditor, En, Es) {
    var UpLoadJsonUrl, StrTemp, StrRnd;
    UpLoadJsonUrl = Path + 'Inc/UpLoad.Asp?Action=SaveLoadMain&smode=1&sdir=' + UpLoadId;
    var EditorUpLoad = KindEditor.editor({
        allowFileManager: true,
        uploadJson: UpLoadJsonUrl
    });
    EditorUpLoad.loadPlugin('multiimage',
    function() {
        EditorUpLoad.plugin.multiImageDialog({
            clickFn: function(urlList) {
                var MakePic;
                KindEditor.each(urlList,
                function(i, data) {
                    StrTemp = '';
                    StrRnd = '';
                    StrRnd = genRandNumber(10000, 999999);
                    if (data.ThumbPic != '') {
                        MakePic = data.ThumbPic;
                    } else {
                        MakePic = data.url;
                    }
                    StrTemp += '<li id="n' + StrRnd + '">';
                    StrTemp += '<img src="' + MakePic + '" />';
                    StrTemp += '<p>';
                    StrTemp += '<input name="UpImagesUrl" type="hidden" value="' + data.url + '" />';
                    StrTemp += '<input name="UpImagesTitle" type="text" style="width:110px;" /><br />';
                    StrTemp += '<a href="javascript:void(0);" onclick="RemoveImages(\'n' + StrRnd + '\',\'../\',\'' + data.url + '\');return false;">删除</a> ';
                    StrTemp += '<a href="javascript:void(0);" onclick="InValue(\'ImageUrl\',\'' + data.url + '\');return false;">设为封面</a>';
                    if (ObjEditor != '' && ObjEditor != null) {
                        StrTemp += '<br /><a href="javascript:void(0);" class="J_insertToEditor" data-pic="' + MakePic + '">插入到编辑器</a>';
                    }
                    StrTemp += '</p>';
                    StrTemp += '</li>';
                    $('#' + DispId).append(StrTemp);
                });
                EditorUpLoad.hideDialog();
            }
        });
    });
}

$('.J_insertToEditor').click(function() {
	alert(ObjEditor);
	alert($(this).attr('data-pic'));
    InEditorVal(ObjEditor, $(this).attr('data-pic'), 1);
});
回复
作者: 小浪子, 发布日期: 2012-10-09 16:24:20
还是木有解决啊。。
回复
作者: Roddy, 发布日期: 2012-10-09 21:56:22
回复小浪子:

$('.J_insertToEditor').click(function() {放在hideDialog上面啊,你放在函数外部当然不行了,那时候DOM都没生成。

回复
作者: 小浪子, 发布日期: 2012-10-10 10:23:52
回复Roddy:谢谢。可以了。
回复
发表新帖 发表回复