wangEditor富文本框值为空判断

本文分享了在使用wangEditor富文本编辑器时遇到的问题及解决方案。当编辑器内仅输入空格和回车时,会生成无用的HTML标签,导致表单误判为有值。文章详细介绍了如何通过自定义函数检查并去除这些无效标签,实现真正的空值判断。
部署运行你感兴趣的模型镜像

wangEditor学习文档和代码

如果在编辑器内,只输入空格和回车,编辑器会返回一堆无用的标签,但表单里认为当前项是有值的,比如:"&nbsp&nbsp&nbsp&nbsp"

我写了一个方法 进行空值判断

/**
	 * 判断editor富文本域是否为空
	 * str返回的值为"" 代表输入框里面有值 成功
	 * str返回!="" 代表里面有空格 回车 失败
	 * */
	function checkVal(str)
	{
		let num = 0,
		reg = /<p>(&nbsp;|&nbsp;\s+)+<\/p>|<p>(<br>)+<\/p>/g;
		while (num < str.length && str != "")
		{
			num++;
			let k = str.match(reg);
			if (k) {
				str = str.replace(k[0], "");
			}
		}
		return str == "";
	}

您可能感兴趣的与本文相关的镜像

Wan2.2-T2V-A5B

Wan2.2-T2V-A5B

文生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

<template> <div :class="['editor-box', self_disabled ? 'editor-disabled' : '']"> <Toolbar v-if="!hideToolBar" class="editor-toolbar" :editor="editorRef" :default-config="toolbarConfig" :mode="mode" /> <Editor v-model="valueHtml" class="editor-content" :style="{ height }" :mode="mode" :default-config="editorConfig" @on-created="handleCreated" @on-blur="handleBlur" /> </div> </template> <script setup lang="ts" name="WangEditor"> import { nextTick, computed, inject, shallowRef, onBeforeUnmount, watch } from "vue"; import { IToolbarConfig, IEditorConfig } from "@wangeditor/editor"; import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; import "@wangeditor/editor/dist/css/style.css"; import { formContextKey, formItemContextKey } from "element-plus"; // 富文本 DOM 元素 const editorRef = shallowRef(); // 实列化编辑器(修复后) const handleCreated = (editor: any) => { editorRef.value = editor; // 延迟设置内容和禁用状态,避免 DOM 同步冲突 nextTick(() => { // 手动设置初始内容,确保格式合法 if (props.value && !editor.isEmpty()) { editor.setHtml(props.value); } // 编辑器创建完成后,再判断是否禁用 if (self_disabled.value) { editor.disable(); } }); }; // 接收父组件参数,并设置默认(修复 editorConfig) interface RichEditorProps { value: string; // 富文本 ==> 必传 toolbarConfig?: Partial<IToolbarConfig>; // 工具栏配置 ==> 非必传(默认为) editorConfig?: Partial<IEditorConfig>; // 编辑器配置 ==> 非必传(默认为) height?: string; // 富文本高度 ==> 非必传(默认为 500px) mode?: "default" | "simple"; // 富文本模式 ==> 非必传(默认为 default) hideToolBar?: boolean; // 是否隐藏工具栏 ==> 非必传(默认为false) disabled?: boolean; // 是否禁用编辑器 ==> 非必传(默认为false) } const props = withDefaults(defineProps<RichEditorProps>(), { toolbarConfig: () => { return { excludeKeys: [] }; }, editorConfig: () => { return { placeholder: "请输入内容...", autoFocus: false, // 禁用自动聚焦,避免 DOM 同步异常 MENU_CONF: {}, scroll: false // 禁用滚动,减少 DOM 操作冲突 }; }, height: "500px", mode: "default", hideToolBar: false, disabled: false }); // 获取 el-form 组件上下文 const formContext = inject(formContextKey, void 0); // 获取 el-form-item 组件上下文 const formItemContext = inject(formItemContextKey, void 0); // 判断是否禁用上传和删除 const self_disabled = computed(() => { return props.disabled || formContext?.disabled; }); // 监听 self_disabled 变化,动态启用/禁用(新增) watch( () => self_disabled.value, (isDisabled) => { if (editorRef.value) { isDisabled ? editorRef.value.disable() : editorRef.value.enable(); } }, { immediate: false } ); // 富文本的内容监听,触发父组件改变,实现双向数据绑定(修复后) const emit = defineEmits<{ "update:value": [value: string]; "check-validate": []; }>(); const valueHtml = computed({ get() { // 过滤纯格+样式的非法内容,避免 Slate 解析失败 if (props.value?.trim() === '' || /^\s+$/.test(props.value)) { return ''; } return props.value || ''; }, set(val: string) { // 防止富文本内容为时,校验失败 const finalVal = editorRef.value?.isEmpty() ? '' : val; emit("update:value", finalVal); } }); // 编辑框失去焦点时触发 const handleBlur = () => { formItemContext?.prop && formContext?.validateField([formItemContext.prop as string]); }; // 组件销毁时,彻底销毁编辑器(修复后) onBeforeUnmount(() => { const editor = editorRef.value; if (!editor) return; editor.destroy(); // 销毁编辑器内核 editorRef.value = null; // 清引用,避免内存泄漏 }); defineExpose({ editor: editorRef }); </script> <style scoped lang="scss"> @use "./index.scss"; /* 可选:添加禁用状态样式,避免 DOM 交互冲突 */ .editor-disabled { pointer-events: none; opacity: 0.7; } </style>
最新发布
11-13
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟小杰子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值