轻量级HTML编辑器组件
Ext.define("vapp.view.DFormForm", { extend: 'Ext.form.Panel', defaultType: "textfield", xtype:"DFormForm", params: {}, waitMsgTarget: true, // 默认使用Ext.MessageBox.wait作为等待消息的显示。 itemId: "editform", defaults: { columnWidth: .5, margin: "5", msgTarget: "side" }, initComponent: function () { var me = this; Ext.apply(me, { items: [{ xtype: "hidden", value: newGuid(), itemId: "FormID", name: "FormID" }, { fieldLabel: "表单名称", anchor: '100%', name: "FormName" }, { fieldLabel: "备注", anchor: '100%', name: "Description" }, { fieldLabel: "表单模板", columnWidth: 1, xtype: 'htmleditor', // 提供一个轻量的HTML编辑器组件 value: '<br>', //设置默认值,解决视图编辑模式下内容为空时,自动添加 ? 问题 anchor: '100% -70', fontFamilies: ['宋体', '隶书', '黑体', '楷体'], // 字体列表 fontFamilies 可用字体数组 name: "ContentText", getDocMarkup: function () { //当编辑器用HTML内容初始化iframe时调用。 var me = this, h = me.iframeEl.getHeight() - me.iframePad * 2, oldIE = Ext.isIE8m; return Ext.String.format( (oldIE ? '' : '<!DOCTYPE html>') + '<html><head><style type="text/css">' + (Ext.isOpera ? 'p{margin:0}' : '') + 'body{border:0;margin:0;padding:{0}px;direction:' + (me.rtl ? 'rtl;' : 'ltr;') + (oldIE ? Ext.emptyString : 'min-') + 'height:{1}px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;cursor:text;background-color:white;' + (Ext.isIE ? '' : 'font-size:12px;font-family:{2}') + '}</style>' + '<link href="/Content/css/docTrace.css" rel="stylesheet" type="text/css" />' + '</head><body></body></html>' , me.iframePad, h, me.defaultFont); } }] }); me.callParent(arguments); }, //保存 doSubmit: function (successFun,failureFun) { var me = this; var form = me.getForm(); if (!form.isValid()) { return; } var editor = me.down("htmleditor"); var els = Ext.query("*[fldtype]",true, editor.iframeEl.dom.contentDocument); //对编辑器内部的dom进行组件查询, var fields = []; //将最新版本的值付给表单元素。 for (j = 0; j < els.length; j++) { // for (k = 0; k < fields.length; j++) { for (k = 0; k < fields.length; k++) { if (fields[k].FieldName == els[j].getAttribute("name") && els[j].getAttribute("name") != "") { ShowMsg('系统提示','['+fields[k].FieldName+ ']表单项重名,保存失败!'); return; } } fields.push({ FieldName: els[j].getAttribute("name"), fldtype: els[j].getAttribute("fldtype"), TagName: els[j].tagName, IsKeyField: els[j].attributes["iskeyfield"]== null ? "N" : els[j].attributes["iskeyfield"].value }); } form.submit({ waitMsg: "保存中...", clientValidation: false, //决定是否在提交之前调用isValid对Form的表单项进行校验。 在Form的提交选项中传递false可以阻止此操作。 url: getAjaxUrl("update_CORE_WorkForm", {}), params: { Category: me.Category, fields: Ext.JSON.encode(fields) }, success: function (form, action) { form.reset(); if (successFun) successFun(); }, failure: function (form, action) { ShowMsg('系统提示', '数据保存失败!'); if (failureFun) failureFun(); } }); } });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?