最近想使用一个html编辑器,而我想获取的值又是通过客户端面的,想起以前使用过 eWebEditor 在线编辑器还不错,
但是以前的获取值都是在后台获得的,试过用 document.getElementById('Content').value 居然获取不到值。
但事实上并不是这样,通过这种方式取值,只能取到初始值,当编辑器的内容变化时是取不到的,为什么呢?为什么后台程序可以取得到编辑器中的值呢,<%=request.getParameter("content1")%>这里是可以取到编辑器中的内容的,但是document.getElementById("content1").value确不可以。看来eWebEditor在js中动了手脚,一定是动态帮定了提交事件,或动态绑定了在源码中搜索onsubmit找到如下代码,原来动态的绑定了onsubmit事件,这样每次在提交前会执行AttachSubmit函数
oForm.attachEvent("onsubmit", AttachSubmit) ; if (! oForm.submitEditor) oForm.submitEditor = new Array() ; oForm.submitEditor[oForm.submitEditor.length] = AttachSubmit ; if (! oForm.originalSubmit) { oForm.originalSubmit = oForm.submit ; oForm.submit = function() { if (this.submitEditor) { for (var i = 0 ; i < this.submitEditor.length ; i++) { this.submitEditor[i]() ; } } this.originalSubmit() ; } } function AttachSubmit() { var oForm = oLinkField.form ; if (!oForm) {return;} var html = getHTML(); ContentEdit.value = html; if (sCurrMode=="TEXT"){ html = HTMLEncode(html); } splitTextField(oLinkField, html); }
AttachSubmit就是copy编辑器的内容到隐藏域控件中的过程。
知道了过程我们的问题就不难解决了。只需在取编辑器内容之前执行下AttachSubmit即可
function validateForm(){ window.frames["eWebEditor1"].AttachSubmit();//执行iframe页面中的AttachSubmit函数 if(document.getElementById("content1").value!=""){ document.getElementById("myform").submit(); }else{ alert("空"); } }
==========================================================
完整代码如下:
<HTML>
<HEAD>
<TITLE>eWebEditor : 标准调用示例</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<link rel='stylesheet' type='text/css' href='example.css'>
<script>
<!--
function validateForm()
{
//执行iframe页面中的AttachSubmit函数
window.frames["eWebEditor1"].AttachSubmit();
if(document.getElementById("content").value != "")
{
alert(document.getElementById("content").value);
}
else
{
alert("空");
}
}
-->
</script>
</HEAD>
<BODY>
<FORM method="post" name="myform">
<TABLE border="0" cellpadding="2" cellspacing="1">
<TR>
<TD>编辑内容:</TD>
<TD>
<INPUT type="hidden" name="content" >
<IFRAME ID="eWebEditor1" src="ewebeditor.htm?id=content&style=coolblue" frameborder="0" scrolling="no" width="550" height="350"></IFRAME>
</TD>
</TR>
<TR>
<TD colspan=2 align=right>
<INPUT type=button value="提交" onclick="validateForm();">
<INPUT type=reset value="重填">
<INPUT type=button value="查看源文件" onclick="location.replace('view-source:'+location)">
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>