使用layer.getChildFrame()提交layer弹窗内表单与layedit编辑器内容

0 下载量 61 浏览量 更新于2024-08-30 收藏 44KB PDF 举报
"layer.open方法用于在弹窗中打开子页面,可以用于提交子页面的form表单数据和layedit文本编辑器的内容。利用layer.getChildFrame()方法,可以在父页面中操作子页面的DOM元素。" 在Web开发中,有时我们需要在弹出层中展示并编辑内容,layer.js是一个非常流行的JavaScript弹窗插件,它提供了丰富的功能,包括创建弹窗、表单提交等。在标题提到的场景中,我们想要在弹窗中编辑新闻,并且在点击“提交”按钮时处理子页面的表单数据和layedit文本编辑器的内容。 首先,我们触发一个点击事件,如`$("a[name='editNews']").click()`,在该事件中调用layer.open来打开一个新的子页面。在layer.open的配置中,设置类型为2(表示iframe模式),传入标题、阴影设置、窗口大小、偏移量以及内容URL。内容URL通常是获取或编辑新闻详情的接口地址。 当用户点击“提交”按钮时,会执行`yes`回调函数。在该回调中,我们通过`layer.getChildFrame`获取子页面的DOM元素。例如,`var newsFrom = layer.getChildFrame('#newsFrom', index);`获取了id为'newsFrom'的form表单,`var layeditCt = layer.getChildFrame('#LAY_layedit_1', index).contents().find('body');`获取了layedit编辑器的内容。 接着,我们需要将layedit编辑器的内容赋值给子页面中某个textarea的ID,比如`#content`,通过`layer.getChildFrame('#content', index).val(layeditCt[0].innerHTML);`实现。 在确认所有必填字段(如标题和栏目)都已填写后,我们可以通过AJAX提交表单数据。这里使用了`$.ajax`,设置请求类型为POST,数据类型为JSON,指定提交的URL和数据。数据来源于`newsFrom.serialize()`,它将form表单的数据序列化为字符串。 如果在验证过程中发现有字段为空,我们可以使用layer.msg显示错误提示,如`layer.msg('标题和栏目不能为空');`。 这个例子展示了如何在layer弹窗中打开一个子页面,使用layedit编辑器编辑内容,并在父页面中处理子页面的表单提交。这个过程涉及到DOM操作、数据验证以及异步请求,是典型的前后端交互场景。