当前位置: 首页 > 知识库问答 >
问题:

超文本标记语言加载到tinymce不保存表单提交时

闾丘鸣
2023-03-14

在GoogleWebApp中,加载到tinymce内联编辑器进行编辑的电子表格中的HTML标记看起来是正确的,但在提交表单时不会保存。

我将标记加载到一个隐藏的文本区域,然后将该内容插入到为tinymce内联编辑器设置的div(class=“divEdit”)中。(如果我将标记文本直接放在DIV中,它将作为文字文本而不是解释的html保存)。我将相同的内容保存到tinymce为编辑器输入创建的隐藏输入元素的innerHTML中——tinymce使用div的ID作为隐藏输入元素的名称。

以下是javascript代码:

window.addEventListener('load', (event) =>{
  var x, i;
x = document.querySelectorAll(".divEdit");
 for (i = 0; i < x.length-1; i++) {
 var tid=x[i].id; //get ID of each DIV which also is NAME of associated tinymce hidden input
 var hid="h"+tid; //ID of my hidden textarea paired with the DIV
 var htm=document.getElementById(hid).value; //hidden textarea holding HTML markup
 document.getElementById(tid).innerHTML=htm; //set DIV innerHTML as the html markup 
 var tEle=document.getElementsByName(tid)[0]; //the hidden input element created by tinymce

//method A -- appears to work, but content not saved on form submit:
tEle.innerHTML = htm; //set hidden input value as the html markup to be edited.

在开发人员工具中查看时,这一切看起来都很好:在开发人员工具中从浏览器截屏,在Div中显示标记和隐藏的输入元素

但是当表单被保存时,tinymce编辑器中的任何内容都不会被保存——然而,如果我不清除表单,而是第二次重新提交表单,那么标记就会被正确保存!

我还尝试在循环中使用tinymce方法将html标记保存到Div:tinymce.get(tid). getBody(). innerHTML=htm;当这起作用时,tinymce没有处理将标记从编辑器Div保存到它的隐藏输入。

基本上,tinymce似乎没有启动(初始化?)使用导入的内容,直到手动激活编辑器实例。我尝试在加载时初始化tinymce,它确实激活了编辑器接口的所有实例,但在表单第一次提交时仍然没有捕获html标记,至少我尝试过的方式是这样。这是一个问题,因为表单中的非html元素可以编辑,而所有html元素保持不变。

我需要做什么不同的事情?非常感谢您的见解。

共有1个答案

葛嘉悦
2023-03-14

经过额外的实验,javascript的解决方案如下:

window.addEventListener('load', (event) =>{

var x, i;

  x = document.querySelectorAll(".divEdit");

  for (i = 0; i < x.length-1; i++) {

  var tid=x[i].id;

  var hid="h"+tid;

  var htm=document.getElementById(hid).value;

   tinymce.get(tid).getBody().innerHTML = htm;

  }

tinymce.triggerSave();

}
 类似资料:
  • 我正在使用ITextRenderer从html生成PDF。然而,我得到以下异常: 你能帮帮我吗? 任何帮助都将不胜感激。 先谢谢你。

  • 我是PHP新手,不知道自己做错了什么。我可以打开html表单并提供数据,但当我点击submit时,它会显示php代码,并且数据库(显然)没有更新。我已经尝试过通过phpMyAdmin手动将值插入表中,并且效果很好。我在网上看过,但我的语法看起来不错。我做错什么了吗?如果错误不太明显,是否有有效的调试方法(即查看错误)? 我有超文本标记语言代码 这是PHP代码 这张表位于phpMyAdmin的数据库

  • 我能够使用JSTL以JSP形式显示bean的数组列表,方法是循环遍历列表并在HTML输入标记中输出bean属性。 如何对JSP进行编码,以便在页面提交时更新的值位于的适当项中?

  • 我试图创建一个简单的HTML表单,通过MySQL保存信息,但我有一些问题连接到数据库。我认为$db_selected=mysql_select_db(DB_NAME,$link);给了我问题。仅供参考DB_NAME是我要使用的数据库表。 超文本标记语言 我的PHP

  • 我试图在HTML的pre标签中包装文本,但它不起作用。我使用下面的CSS作为我的标签。 我从如何在pre标记中换行文本? 我已添加

  • 我正试图用Thymeleaf创建一个基于Spring Boot的应用程序。我使用PetClinic样本作为起点。我的应用程序找不到某些模板。 我的项目以标准方式设置: 波姆。xml MyWebApplication.java 家庭控制器。JAVA home.html layout.html application.properties是空的。 当我导航到时,我得到错误: 解析模板“{fragmen

  • 我的应用程序中有一个webView。webView最初会打开一个我创建的HTML页面,页面上有几个按钮。这些按钮执行各种任务(我正在尝试学习如何使用webView),例如:1)显示android toast,2)显示javascript警报,3)振动手机,4)显示当前地理位置,5)在webView中打开谷歌地图。 最后一个坏了。我搜索过这个网站和其他很多网站,但没有找到一个有效的解决方案。 我相当

  • 过滤完成后,如果列表值与输入值均不匹配,我将尝试显示“未找到”文本。我使用了不同的方法,但不起作用,下面是我的代码。提前谢谢你。 我使用了一种方法,在html上添加了div text,并将其分类为“text”,样式为“display:none”,然后在js:document中的“else”下面添加了这段代码。getElementById(“文本”)。风格显示=“无”。之后,当您在输入中键入内容时,