福安市教育局建设网站企业整站推广

张小明 2026/1/10 5:08:15
福安市教育局建设网站,企业整站推广,wordpress通知搜索引擎收录,浙江住房和城乡建设网本文基于上一篇文章进行优化#xff0c;不需要关注业务input怎么封装#xff0c;不涉及业务改动。通用自定义数组键盘输入功能如下#xff1a;直接贴代码 import type { FC } from react; import React, { useEffect } from react; import { useRecoilValue } from recoil;…本文基于上一篇文章进行优化不需要关注业务input怎么封装不涉及业务改动。通用自定义数组键盘输入功能如下直接贴代码import type { FC } from react; import React, { useEffect } from react; import { useRecoilValue } from recoil; import { EPanelKeyModeType, EPanelNumCommand } from /pages/editor1/common/enum; import ConfigManage from /pages/global/ConfigManage; import { panelCommandStore } from /stores; import { updateKeyMode } from /utils/panel; export type AnyObjectImple Recordstring, string | number; const INPUTTAGNAME INPUT; const INPUTTEXT text; const INPUTTEL tel; /** * 通用业务数字键盘计算 * type cueMode: 文本模式, cueMode: 数字模式两种 * waring 计算文本之前需要将文本现有数据 set 到panelNumberStore的originalVal上 * desc 考虑到这里业务的逻辑较复杂将业务提取为公用业务组件 * desc 任何地方都可以使用该组件进行数字键盘的计算、文本的计算 * desc 追加文本框光标位置的计算 * returns */ const NumberKeyboard: FC () { // 指令 const panelCommand useRecoilValue(panelCommandStore); const IsNormalScreen ConfigManage.getExpandCfg().IsNormalScreen; useEffect(() { // 文字输入框添加onfocus, onblur监听调起小控台数字按键 if (IsNormalScreen) return; const isNeedBlur (relateDM) { if (relateDM?.tagName ! INPUTTAGNAME) { return true; } else { return relateDM?.type ! INPUTTEXT relateDM?.type ! INPUTTEL; } }; const isTargetInput (targetDMParam: HTMLInputElement) { return ( targetDMParam?.tagName INPUTTAGNAME (targetDMParam?.type INPUTTEXT || targetDMParam?.type INPUTTEL) ); }; const onFocus (e: FocusEvent) { if (isTargetInput(e.target as HTMLInputElement)) { updateKeyMode(EPanelKeyModeType.numberKeyMode); } }; const onBlur (e: FocusEvent) { const relateDOM e.relatedTarget as HTMLInputElement; if (isTargetInput(e.target as HTMLInputElement) isNeedBlur(relateDOM)) { updateKeyMode(EPanelKeyModeType.restoreLastMode); } }; document.addEventListener(focusin, onFocus); document.addEventListener(focusout, onBlur); return () { document.removeEventListener(focusin, onFocus); document.removeEventListener(focusout, onBlur); }; }, []); /** * 数字按键相关指令 * desc 1. 处理普通输入框 * desc 2. 处理纯数字按键模式 * return input 结果 */ const changeNumberCommand (commandData) { // 指令 const { command } commandData; try { // 获取选定对象 const selection window.getSelection(); if (selection) { // 如果是文本节点则先获取光标对象 const range selection?.getRangeAt(0); // 获取光标对象的范围界定对象一般就是textNode对象 const textNode: any range.startContainer; // 获取输入框input Dom元素, 使用的是And design InputtextNode是divdiv里面且套input等子元素 const inputNode textNode?.getElementsByTagName(input)[0]; // 光标开始 const selectionStart inputNode.selectionStart; // 结束位置 const selectionEnd inputNode.selectionEnd; console.info(selectionStart, selectionStart, selectionEnd, selectionEnd); // 处理指令运算 数字 handleNumberCommand(command, inputNode); } } catch (e) {} }; /** * 数字指令处理 * param command * param inputNode */ const handleNumberCommand (command, inputNode) { // 业务指令转对应文本 let pressFpgaVal: number | string command - EPanelNumCommand.num0; if (command EPanelNumCommand.point) { pressFpgaVal .; } /** * 1. 处理键盘指令分数字模式和非数字模式非数字模式直接追加内容数字模式计算内容 * 2. 判断指令范围 * 3. 判断指令模式处理对应模式数据 */ if (command EPanelNumCommand.num0 command EPanelNumCommand.enter) { if (command EPanelNumCommand.point) { // 0-9数字处理指令 doNumberCommand(inputNode, pressFpgaVal); } else if (command EPanelNumCommand.point) { // 小数点操作 // equalTen(); } else if ([EPanelNumCommand.add, EPanelNumCommand.minus].includes(command)) { // 运算指令暂时不支持 // opertBtn(command); } else if (command EPanelNumCommand.back) { // 控台Back删除处理指令 doBackCommand(inputNode); } else if (command EPanelNumCommand.enter) { // 控台Enter处理指令 doEnterCommand(inputNode); } } }; /** * 0-9数字处理指令 * param command */ const doNumberCommand (inputNode, pressFpgaVal) { // 转换成字符串 const value inputNode.value ; // 光标开始、结束位置 const selectionStart inputNode.selectionStart; const selectionEnd inputNode.selectionEnd; // 计算新值 const newValue value.substr(0, selectionStart) pressFpgaVal value.substring(selectionEnd, value.length); console.info(value, value, newValue); // 事件发布到组件中input const evt new UIEvent(inputchange, { bubbles: false, cancelable: false, }); const keyName data; evt[keyName] { value: newValue, selectionStart: selectionStart pressFpgaVal.toString().length, selectionEnd: selectionStart pressFpgaVal.toString().length, }; // 触发onChange事件 inputNode.dispatchEvent(evt, newValue); }; /** * 控台Back删除处理指令 * param command */ const doBackCommand (inputNode) { // 转换成字符串 const value inputNode.value ; // 光标开始、结束位置 const selectionStart inputNode.selectionStart; const selectionEnd inputNode.selectionEnd; // 计算新值 const newValue value.substr(0, selectionStart - 1) value.substring(selectionEnd, value.length); console.info(value, value, newValue); // 事件发布到组件中input const evt new UIEvent(inputchange, { bubbles: false, cancelable: false, }); const keyName data; evt[keyName] { value: newValue, selectionStart: selectionStart - 1, selectionEnd: selectionStart - 1, }; // 触发onChange事件 inputNode.dispatchEvent(evt); }; /** * 控台Enter处理指令 * 触发失去焦点指令 * param command */ const doEnterCommand (inputNode) { // 失焦事件发布到组件中input const evt new UIEvent(enter, { bubbles: false, cancelable: false, }); // 触发onChange事件 inputNode.dispatchEvent(evt); }; /** * 初始化订阅数字键盘指令 */ useEffect(() { if (panelCommand) { changeNumberCommand(panelCommand); } }, [panelCommand]); return div /; }; export default NumberKeyboard;
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设的功能和目标js代码能用在wordpress吗

在软件测试领域,职业演讲与技术分享不仅是展示专业能力的重要途径,还能促进团队知识共享和个人职业成长。作为测试工程师,我们常常需要向同事、管理层或行业同仁分享测试策略、自动化框架经验或缺陷管理实践。然而,许多测试从业者…

张小明 2025/12/27 18:08:47 网站建设

商城类网站建设网站建设销售主管岗位职责

Chatbox实战指南:开启个人AI工作台的深度解析 【免费下载链接】chatbox Chatbox是一款开源的AI桌面客户端,它提供简单易用的界面,助用户高效与AI交互。可以有效提升工作效率,同时确保数据安全。源项目地址:https://git…

张小明 2025/12/25 12:12:22 网站建设

裁剪图网站网站模版html

还在为传统AI语音助手复杂的部署流程和昂贵的硬件成本而烦恼吗?小智AI聊天机器人项目为你带来了革命性的解决方案——基于MCP协议的开源框架,让每个人都能轻松构建属于自己的智能语音伴侣! 【免费下载链接】xiaozhi-esp32 Build your own AI …

张小明 2026/1/6 17:20:13 网站建设

网站模板生成wordpress 主题推荐

当前,家政服务市场正处于快速发展阶段,众多中小家政企业主在广阔的市场前景下,也普遍面临着“增长不增利”的经营压力。如何有效应对获客成本高企、服务标准化缺失等难题,已成为行业关注的重点。 一、获客成本高企挤压利润空间 传…

张小明 2025/12/25 13:48:55 网站建设

网页制作站点标志设计公司成都

FLUX.1-ControlNet图像生成问题全解 在当前AI图像生成技术快速演进的背景下,FLUX.1-dev 凭借其创新的 Flow Transformer 架构 和高达 120亿参数规模,正逐步成为高保真文生图任务的新标杆。它不仅在细节还原、复杂语义理解方面表现卓越,更通过…

张小明 2026/1/8 7:57:00 网站建设