2012-01-11 90 views
0


我想在Fancybox窗口中提交表单以进行预览;这看起来不那么困难,因为一个简单的在预览Fancybox窗口中提交表格(带TinyMCE麻烦...)

$('#preview').fancybox({ 
    ajax: { 
     type: "POST", 
     data: $('#form1').serialize() 
    } 
}); 

能做的工作...
但事情永远不会那么容易,和TinyMCE编辑器(jQuery的版本)增加了麻烦
我发现上面的代码不发送更新textarea的内容(不知道为什么),所以它是无用的预览

我结束了与此:

$('#preview').click(function(e){ 
    e.preventDefault(); 
    $(this).fancybox({ 
     ajax: { 
      type: "POST", 
      data: $('#form1').serialize() 
     } 
    }); 
}) 

临屋t做这项工作,但只有当我点击两次che #preview锚点
似乎第一次点击“更新”textarea的内容,第二次点击打开Fancybox嗯,你有更好的解决方案吗?我用Google搜索左右,但似乎没有什么了“在预览窗口的fancybox提交表单” ......提前

谢谢...

+0

伊万,一个小问题得到了TinyMCE的内容 - 它是如何用自己的方式来调用链接?我试图传递数据,我不能这样做iframe,只能到新的空白页面。当我试图传递给iframe时,发生错误“请求的内容无法加载”。 – kacper 2012-12-17 19:58:41

+0

嗨kacper,这是一个旧的帖子,我不记得如何,如果我解决了这个问题或尝试了另一种方式(我不记得我正在工作的网站)...对不起 – Ivan 2012-12-26 10:35:36

回答

0

您请求的textarea的内容,但内容似乎并没有被最新。 这是因为tinymce编辑器内容不在textarea内部,而是在contenteditable iframe中。前面的textarea是隐藏的。要更新隐藏的textarea,你可以使用tinymce.triggerSave()

$('#preview').click(function(e){ 
    e.preventDefault(); 
    tinymce.triggerSave(); 
    $(this).fancybox({ 
     ajax: { 
      type: "POST", 
      data: $('#form1').serialize() 
     } 
    }); 
}) 

,或直接从编辑器

$('#preview').click(function(e){ 
    e.preventDefault(); 
    $(this).fancybox({ 
     ajax: { 
      type: "POST", 
      data: tinymce.get('form1').getContent(); 
     } 
    }); 
}) 
+0

感谢您的回答,Thariama,但这些都不起作用;在第一个问题中,我有“双击”问题(第二次点击就会启动fancybox),即使我删除了最后一个“;”,我也没有任何花哨的方式,页面会在自己的窗口中打开。 .. – Ivan 2012-01-11 14:20:52

+0

sry,我没有别的想法 – Thariama 2012-01-11 14:35:51