平板收銀系統、國產系統,鴻蒙系統,小鍵盤的封裝與應用—仙盟創夢IDE

數字小鍵盤封裝

數組小鍵盤封裝是指將與數組小鍵盤相關的功能、操作、數據等進行整合,形成一個獨立的、可復用的模塊。封裝數組小鍵盤具有以下幾方面重要意義:

提高代碼可維護性

  • 降低復雜度:數組小鍵盤在實際應用中,可能涉及到按鍵事件處理、按鍵狀態管理、輸入數據驗證等一系列操作。若不進行封裝,這些代碼會分散在整個項目中,導致代碼結構混亂,難以理解和維護。而封裝后,這些代碼被集中在一個模塊里,代碼結構變得清晰,維護起來更加容易。
  • 便于修改:當小鍵盤的功能需要調整時,比如修改按鍵布局、添加新的按鍵功能,只需在封裝模塊內部進行修改,不會對項目的其他部分產生影響。例如,原本小鍵盤只能輸入數字,現在要添加小數點輸入功能,在封裝模塊里添加相應的按鍵處理邏輯即可。

增強代碼復用性

  • 跨項目使用:封裝好的數組小鍵盤模塊可以在多個項目中重復使用。比如,在開發多個需要數字輸入的移動應用時,只需將封裝好的小鍵盤模塊引入到不同項目中,就可以快速實現小鍵盤功能,避免了重復編寫相同代碼的工作,提高了開發效率。
  • 項目內復用:在同一個項目中,不同的界面可能都需要用到數組小鍵盤,如登錄界面輸入驗證碼、設置界面輸入密碼等。通過封裝,只需在需要的地方調用這個模塊,就可以輕松實現小鍵盤功能,減少了代碼冗余。

提升代碼安全性

  • 隱藏內部實現細節:封裝可以將小鍵盤的內部實現細節隱藏起來,只對外提供必要的接口。外部代碼只能通過這些接口與小鍵盤模塊進行交互,這樣可以防止外部代碼對小鍵盤內部數據和邏輯的非法訪問和修改,提高了代碼的安全性。
  • 數據驗證和過濾:在封裝模塊內部可以對用戶輸入的數據進行驗證和過濾,防止非法數據進入系統。例如,在小鍵盤輸入密碼時,可以在模塊內部驗證密碼長度、字符類型等,確保輸入的密碼符合安全要求。

便于團隊協作

  • 分工明確:封裝后的數組小鍵盤模塊可以由專門的開發人員負責開發和維護,其他開發人員只需按照接口文檔使用該模塊即可。這樣可以實現開發任務的分工,提高團隊開發效率。
  • 減少沖突:不同開發人員在開發項目時,可能會對同一部分代碼進行修改,從而產生沖突。封裝后的模塊可以減少這種沖突的發生,因為其他開發人員不需要了解模塊內部的具體實現,只需要關注接口的使用。

?數字小鍵盤匿名關聯事件優點

  • 減少命名沖突:匿名函數無需命名,這能避免因函數命名引發的沖突問題。在一個大型項目中,代碼里會存在大量的函數和變量,若為每個事件處理函數都賦予一個唯一的名稱,不但耗費時間,還可能出現命名重復的狀況。采用匿名關聯事件,就無需操心命名的問題,降低了命名沖突的可能性。
  • 代碼緊湊:匿名關聯事件可以直接在事件綁定的地方定義事件處理邏輯,讓代碼更加緊湊。以 JavaScript 為示例,在綁定數字小鍵盤按鍵點擊事件時,使用匿名函數可以讓代碼看起來更加簡潔

代碼?

/*
仙盟 創夢 數字鍵盤
2024-5-8
*/// 檢查頁面中是否存在 CyberWin_Dialog 對象if (typeof window.CyberWin_Dialog === 'undefined') {// 如果不存在,創建一個空的 CyberWin_Dialog 對象window.CyberWin_Dialog = {};} else {/*// 如果存在,為其添加一個類屬性if (!CyberWin_Dialog.仙盟創夢_小鍵盤) {CyberWin_Dialog.仙盟創夢_小鍵盤 = {play: function (靈體obj) {console.log("靈體obj"); console.log(靈體obj); },contains: function (className) {return !!this[className];}};}*/// CyberWin_Dialog.classList.add('new-class');}// 如果存在,為其添加一個類屬性if (!CyberWin_Dialog.仙盟創夢_小鍵盤) {CyberWin_Dialog.仙盟創夢_小鍵盤 = {add: function (className) {if (!this[className]) {this[className] = true;}},// this.仙盟創夢_數字鍵盤_靈體obj=null,constructor() {this.仙盟創夢_cpu=this},仙盟創夢_cpu:this,仙盟創夢_數字鍵盤_靈體_指針obj:null,仙盟創夢_數字鍵盤_靈體_指針id:null,getStyle:function(){const 仙盟樣式 =`<style>.仙盟創夢_數字鍵盤對話框dlg{    z-index: 999999;border:0px;flex-direction:column;margin:0 !important;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-height:calc(100% - 30px);max-width:calc(100% - 30px)}.仙盟創夢_數字鍵盤容器{width:300px;border:1px solid #ccc;border-radius:10px;overflow:hidden}.keypad-header{background-color:#4CAF50;color:white;padding:10px;display:flex;justify-content:space-between;align-items:center}.keypad-header span{font-size:18px}.close-btn{background:none;border:none;color:white;font-size:20px;cursor:pointer}.input-display{display:flex;justify-content:space-between;align-items:center;padding:5px 10px;background-color:#f2f2f2}.input-display input{width:80%;padding:5px;border:1px solid #ccc;border-radius:3px}.keypad-body{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:5px;padding:10px}.仙盟創夢-keypad{color: #000;padding:10px;font-size:18px;border:none;border-radius:5px;background-color:#f2f2f2;cursor:pointer}.仙盟創夢_樣式_鍵盤{padding:10px;font-size:18px;border:none;border-radius:5px;background-color:#f2f2f2;cursor:pointer}.仙盟創夢_小鍵盤_關閉,.仙盟創夢_小鍵盤_退格,.輸入確定{background-color:#e0e0e0}</style>`;return 仙盟樣式;},getBody:function(){const 仙盟數據 = ` <dialog id="仙盟創夢_數字鍵盤對話框dlg" class="仙盟創夢_數字鍵盤對話框dlg"><div class="仙盟創夢_數字鍵盤容器"><div class="keypad-header"><span>請輸入數量</span><button class="仙盟創夢_小鍵盤_關閉">×</button></div><div class="input-display"><input type="text" id="仙盟創夢_數字鍵盤_輸入數字" readonly></div><div class="keypad-body"><button class="仙盟創夢-keypad" data-value="7">7</button><button class="仙盟創夢-keypad" data-value="8">8</button><button class="仙盟創夢-keypad" data-value="9">9</button><button class="仙盟創夢_樣式_鍵盤 仙盟創夢_小鍵盤_退格" data-value="backspace">退格</button><button class="仙盟創夢-keypad" data-value="4">4</button><button class="仙盟創夢-keypad" data-value="5">5</button><button class="仙盟創夢-keypad" data-value="6">6</button><button class="仙盟創夢_樣式_鍵盤  仙盟創夢_小鍵盤_清空">清空</button><button class="仙盟創夢-keypad" data-value="1">1</button><button class="仙盟創夢-keypad" data-value="2">2</button><button class="仙盟創夢-keypad" data-value="3">3</button><button class="仙盟創夢_樣式_鍵盤 輸入確定 "   >確認</button><button class="仙盟創夢-keypad" data-value="00">00</button><button class="仙盟創夢-keypad" data-value="0">0</button><button class="仙盟創夢-keypad" data-value=".">.</button></div></div></dialog>`;return 仙盟數據;},init: function (靈體obj) {console.log("靈體obj"); console.log(靈體obj); var 仙盟數據 = this.getBody();var 仙盟樣式 = this.getStyle();//document.write(仙盟樣式);const 仙盟鍵盤容器 = document.getElementById('仙盟創夢_小鍵盤block');仙盟鍵盤容器.innerHTML=仙盟樣式+仙盟數據;this.loadeventcommon();//const dialog = new Dialog(仙盟數據);},play: function (靈體obj,靈體id) {console.log("靈體obj"); // console.log(靈體obj); console.log("仙盟創夢_cpu==仙盟創夢_cpu"); console.log(this.仙盟創夢_cpu); this.仙盟創夢_數字鍵盤_靈體_指針obj=靈體obj;this.仙盟創夢_數字鍵盤_靈體_指針id =靈體id;console.log('關閉小鍵盤2');console.log(this.仙盟創夢_數字鍵盤_靈體obj);var 仙盟數據 = this.getBody();// console.log(仙盟數據); var p = document.createElement('dialog');p.innerHTML =仙盟數據;element.classList.add("newClass");element.setAttribute("id", "newID");document.body.append(p);p.show();this.loadevent(靈體obj,靈體id);仙盟創夢_數字鍵盤對話框dlg.show();var 仙盟創夢_數字鍵盤_輸入數字 = document.getElementById('仙盟創夢_數字鍵盤_輸入數字')仙盟創夢_數字鍵盤_輸入數字.value=全局仙盟創夢_數字鍵盤_靈體obj.value;//const dialog = new Dialog(仙盟數據);},loadeventcommon: function () {var buttons = document.querySelectorAll('.仙盟創夢-keypad');buttons.forEach(button => {button.addEventListener('click', function () {const value = this.dataset.value;if (value === 'backspace') {仙盟創夢_數字鍵盤_輸入數字.value = 仙盟創夢_數字鍵盤_輸入數字.value.slice(0, -1);} else if (value === 'cancel') {仙盟創夢_數字鍵盤_輸入數字.value = '';} else if (value === 'confirm') {// 這里可以添加確認后的處理邏輯,比如提交數據等console.log('確認輸入的數字:', 仙盟創夢_數字鍵盤_輸入數字.value);} else {仙盟創夢_數字鍵盤_輸入數字.value += value;}});});},loadevent: function () {console.log("靈體obj"); console.log('關閉小鍵盤2loadevent');var 仙盟創夢_cpu = this.仙盟創夢_cpu;var 仙盟創夢_數字鍵盤_靈體id=this.仙盟創夢_數字鍵盤_靈體_指針id;var 仙盟創夢_數字鍵盤_靈體obj = this.仙盟創夢_數字鍵盤_靈體_指針obj;//靈體obj;var 仙盟創夢_數字鍵盤對話框 = document.getElementById('仙盟創夢_數字鍵盤對話框dlg');var 仙盟創夢_數字鍵盤_輸入數字 = document.getElementById('仙盟創夢_數字鍵盤_輸入數字');var 仙盟創夢_小鍵盤_關閉 = document.querySelector('.仙盟創夢_小鍵盤_關閉');var 仙盟創夢_小鍵盤_清空 = document.querySelector('.仙盟創夢_小鍵盤_清空');var 輸入確定 = document.querySelector('.輸入確定');var 仙盟創夢_小鍵盤_退格 = document.querySelector('.仙盟創夢_小鍵盤_退格');仙盟創夢_數字鍵盤_輸入數字.value = 全局仙盟創夢_數字鍵盤_靈體obj.value;console.log("仙盟創夢_數字鍵盤_靈體obj",仙盟創夢_數字鍵盤_靈體obj);輸入確定.innerHTML = 輸入確定.innerHTML;console.log('事件監聽器已清空');輸入確定.addEventListener('click', function () {// 這里可以添加關閉小鍵盤的邏輯,比如隱藏元素等console.log('關閉小鍵盤');全局仙盟創夢_數字鍵盤_靈體obj.value =仙盟創夢_數字鍵盤_輸入數字.value;//仙盟創夢_數字鍵盤_輸入數字.value = '';仙盟創夢_數字鍵盤對話框dlg.close();console.log('關閉小鍵盤2');});仙盟創夢_小鍵盤_清空.addEventListener('click', function () {仙盟創夢_數字鍵盤_輸入數字.value = '';console.log('關閉小鍵盤');});仙盟創夢_小鍵盤_關閉.addEventListener('click', function () {仙盟創夢_數字鍵盤_輸入數字.value = '';仙盟創夢_數字鍵盤對話框dlg.close();console.log('關閉小鍵盤');});仙盟創夢_小鍵盤_退格.addEventListener('click', function () {var  text = 仙盟創夢_數字鍵盤_輸入數字.value;//$('#'+cwpd_current_sel_id).val();if (text == "0" || text == "") {//$(this).parents('.counter').find('.text').val('');仙盟創夢_數字鍵盤_輸入數字.value = '';} else {var last_value = text.substr(-2, 1);if (last_value == '.') {仙盟創夢_數字鍵盤_輸入數字.value = text.substr(0, text.length - 2);} else {仙盟創夢_數字鍵盤_輸入數字.value = text.substr(0, text.length - 1);}}//$('#'+cwpd_current_sel_id).focus();
});//const dialog = new Dialog(仙盟數據);},contains: function (className) {return !!this[className];}};}

調用

	var 仙盟創夢_小鍵盤new = CyberWin_Dialog.仙盟創夢_小鍵盤;//CyberWin_Dialog.仙盟創夢_小鍵盤.init();仙盟創夢_小鍵盤new.init();
function 仙盟創夢_數字鍵盤_打開(靈體obj){全局仙盟創夢_數字鍵盤_靈體obj=靈體obj;仙盟創夢_小鍵盤new.play(靈體obj,"");// 仙盟創夢_數字鍵盤對話框.show();}

平板網頁移動收銀

onclick="仙盟創夢_數字鍵盤_打開(this);"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80190.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80190.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80190.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網工實驗——OSPF配置

網絡拓撲圖 配置 1.為每個路由器配置接口&#xff08;略&#xff09;&#xff08;詳細見RIP實驗&#xff09; 2.配置OSPF AR1 [AR1]ospf [AR1-ospf-1]area 1 [AR1-ospf-1-area-0.0.0.1]network 172.16.1.1 0.0.0.0 #精確配置網絡&#xff0c;也可以像下面那條命令那樣配置 …

Kubernetes client-go 客戶端類型與初始化指南

Kubernetes client-go 客戶端類型與初始化指南 在 Kubernetes 的 client-go 庫中&#xff0c;存在多種客戶端用于與 API 服務器交互。以下介紹主要客戶端類型&#xff0c;包括用途、初始化方式及 Demo。 1. RESTClient 用途 RESTClient 是底層 REST 客戶端&#xff0c;直接…

java加強 -泛型

概念 定義類、接口、方法時&#xff0c;同時聲明了一個或多個類型變量&#xff08;如<E>&#xff09;&#xff0c;稱為泛型類、泛型接口、泛型方法、它們統稱為泛型。 語法 public class ArrayList<E>{} E可以接收不同類型的數據&#xff0c;可以是字符串&…

C++ 項目 -- 高并發內存池

目錄 項目介紹 內存池概念 池化技術 內存池 內存池主要解決的問題 malloc 定長內存池 申請內存 釋放內存 整體框架設計 thread cache 申請內存 釋放內存 central cache 申請內存 釋放內存 page cache 申請內存 釋放內存 大塊內存申請實現 定長內存…

高效C/C++之九:Coverity修復問題:關于數組操作 和 內存操作

【關注我&#xff0c;后續持續新增專題博文&#xff0c;謝謝&#xff01;&#xff01;&#xff01;】 上一篇我們講了&#xff1a; 這一篇我們開始講&#xff1a; 高效C/C之九&#xff1a;Coverity修復問題&#xff1a;關于數組操作 和 內存操作 目錄 【關注我&#xff0c;后…

vfrom表單設計器使用事件機制控制字段顯示隱藏

1. 使用表單設計器進行debug調試 依據 vform3.0開發者文檔 https://www.ganweicloud.com/docs/6.1.0/pages/d3e6d9/ 對switch組件設置事件邏輯 調試中

iPhone 和 Android 在日期格式方面的區別

整篇文章由iPhone 和 Android 在日期格式方面有所不同引起,大致介紹了,兩種時間標準,以及在 JavaScript 下的格式轉換方法。 Unix 時間戳是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。 iPhone 和 Android 在日期格式方面有所不同。其中,iPhone(iOS)使…

985高校查重率“隱性閾值”:低于5%可能被重點審查!

你是不是也以為&#xff1a; “查重率越低越好&#xff0c;最好壓到1%、0%&#xff0c;導師看了都感動哭&#x1f979;” 但是你不知道的是——在985/211等重點高校&#xff0c;查重率太低反而可能引起導師和學術辦公室的“特別關注”&#xff01; 今天就來扒一扒這個查重圈“…

【NLP】33. Pinecone + OpenAI :構建自定義語義搜索系統

Pinecone OpenAI 中文教學教程&#xff1a;構建自定義語義搜索系統 一、背景介紹 當下 AI 問答系統、矩陣檢索、短文本分類等場景中&#xff0c;都需要很好地實現 “根據輸入進行相似給點搜索”。這種算法基礎稱為 “向量搜索”&#xff0c;它的核心是將文本轉換為向量后&am…

【Mybatis-plus常用語法】

MyBatis-Plus 是 MyBatis 的增強工具&#xff0c;提供了很多便捷的功能來簡化開發。以下是一些 MyBatis-Plus 的常見語法&#xff1a; 實體類注解&#xff1a;使用 TableName 注解來指定實體類和數據庫表的映射關系。 TableName("user") public class User {privat…

Logback官方文檔翻譯章節目錄

Logback官方文檔翻譯章節目錄 第一章 Logback簡介 第二章 Logback的架構&#xff08;一&#xff09; Logback的架構&#xff08;二&#xff09; Logback的架構&#xff08;三&#xff09; 持續更新中…

Python變量作用域

變量作用域是Python編程中非常重要的基礎概念&#xff0c;理解它可以幫助你避免很多常見的錯誤。本文將用簡單易懂的方式&#xff0c;帶你全面掌握Python變量作用域的所有細節。 一、什么是變量作用域&#xff1f; 變量作用域&#xff08;Scope&#xff09;指的是變量在程序中…

初學者的AI智能體課程:構建AI智能體的十堂課

初學者的AI智能體課程:構建AI智能體的十堂課 在人工智能(AI)領域,AI智能體正在逐漸發揮其不容忽視的作用。自動化的智能體不僅僅在理論上廣泛討論,更加在實際應用中開辟了一片新的天地。那么如何動手開發屬于自己的AI智能體呢?Microsoft提供的AI智能體入門課正是為此而設…

【并發編程】MySQL鎖及單機鎖實現

目錄 一、MySQL鎖機制 1.1 按鎖粒度劃分 1.2 按鎖功能劃分 1.3 InnoDB鎖實現機制 (1)記錄鎖(Record Lock) (2) 間隙鎖(Gap Lock) (3) 臨鍵鎖(Next-Key Lock) (4) 插入意向鎖(Insert Intention Lock) 二、基于 JVM 本地鎖實現,保證線程安全 2.1 線程不安全的分析 2.1…

能耗優化新引擎:EIOT平臺助力企業降本增效

安科瑞顧強 數字化轉型的背景下&#xff0c;能源管理正加速向智能化、遠程化方向演進。安科瑞電氣推出的EIOT托管平臺及ADW300系列4G無線計量儀表&#xff0c;通過云端技術與無線通信的深度融合&#xff0c;為用戶打造了高效、便捷的遠程能源監測與管理體系&#xff0c;助力企…

(14)Element Plus項目綜合案例

本系列教程目錄&#xff1a;Vue3Element Plus全套學習筆記-目錄大綱 文章目錄 第3章 綜合案例3.1 搭建項目3.1.1 創建Vite工程3.1.2 配置路由 3.2 登錄模塊頁面3.2.1 注冊頁面3.2.2 登錄頁面3.2.3 忘記密碼頁面 3.3 導航設置3.3.1 頭部3.3.2 側邊欄與底部1&#xff09;頭像部分…

Webug4.0靶場通關筆記22- 第27關文件包含

目錄 一、文件包含 1、原理分析 2、文件包含函數 &#xff08;1&#xff09;include( ) &#xff08;2&#xff09;include_once( ) &#xff08;3&#xff09;require( ) &#xff08;4&#xff09;require_once( ) 二、第27關滲透實戰 1、打開靶場 2、源碼分析 3、…

〖 Linux 〗解決 VS Code 遠程連接服務器的常見問題

文章目錄 解決 VS Code 遠程連接服務器的斷開問題VS Code Remote-SSH一直彈出輸入密碼的問題VsCode C 語法檢測失效不標紅色波浪線 解決辦法卸載擴展方式&#xff1a; 解決vscode C智能提示緩慢 解決 VS Code 遠程連接服務器的斷開問題 解決 vscode 卡頓&#xff0c;卡死&…

ERC-20與ERC-721:區塊鏈代幣標準的雙星解析

一、代幣標準的誕生背景 在以太坊生態中&#xff0c;代幣標準是構建去中心化應用&#xff08;DApps&#xff09;的基石。ERC-20與ERC-721分別代表同質化與非同質化代幣的兩大核心標準&#xff0c;前者支撐著90%以上的加密資產流通&#xff0c;后者則開啟了數字資產唯一性的新時…

C++入門小館 :多態

嘿&#xff0c;各位技術潮人&#xff01;好久不見甚是想念。生活就像一場奇妙冒險&#xff0c;而編程就是那把超酷的萬能鑰匙。此刻&#xff0c;陽光灑在鍵盤上&#xff0c;靈感在指尖跳躍&#xff0c;讓我們拋開一切束縛&#xff0c;給平淡日子加點料&#xff0c;注入滿滿的pa…