(投机取巧)在ajax应用中整合fckeditor AjaxfckeditorRailsJavaScriptRuby
项目中一直使用fck做为html编辑器,最近需要在一个ajax应用中整合fckeditor, 然后看了看 http://www.iteye.com/article/44349 这篇文章(里面已经讲过fck提交的时候处理过程,这里就不赘述了). 同时macrochen 也提供了一个办法来整合应用. 我这里要说的是另外一种投机的偷懒做法:
因为fck是在提交的时候才将iframe中的html写到一个隐藏的textarea中,所以提交的时候直接取这个textarea是取不倒值的,为了不去更改fck的源码,我走了另外一条路子,就是将表单"提交两次", 注意是加了引号的. 第一次提交的时候,永远返回false,目的就是一个,让fck把ifame中的html写到textarea中,然后过1秒以后在提交一次,这个时候就能很方便的取到表单的值了.
下面附上js代码:
<script type='text/javascript'>
var submitCount = 1; //记录提交次数
function validate() //表单提交的时候验证函数 onsubmit="return validate()'
{
if(submitCount == 1) //第一次提交直接返回false,并且1秒以后再执行validate().
{
submitCount ++;
setTimeout('validate()',1000);
return false;
}
//第二此提交的时候直接可以从表单中取得值了.
var frm = $('testFrm');
var params = frm.serialize();
$("info").innerHTML = params;
return false;
}
</script>
<script type="text/javascript">
var submitCount = 1; //记录提交次数
function validate() //表单提交的时候验证函数 onsubmit="return validate()'
{
if(submitCount == 1) //第一次提交直接返回false,并且1秒以后再执行validate().
{
submitCount ++;
setTimeout('validate()',1000);
return false;
}
//第二此提交的时候直接可以从表单中取得值了.
var frm = $('testFrm');
var params = frm.serialize();
$("info").innerHTML = params;
return false;
}
</script>