java彈出虛擬鍵盤_JS實現電腦虛擬鍵盤的操作

本文實例為大家分享了JS實現電腦虛擬鍵盤的具體代碼,供大家參考,具體內容如下

需求:

1.當輸入框光標聚焦時,電腦虛擬鍵盤彈出

0493ec782087f881f0997a30ab6ffe10.png

4220d93c41a4d14f7f8b05ad216e5cc4.png

2.在輸入框輸入內容時,鍵盤跟著變化

4a4a744a6052702e0c90d028dcccc408.png

具體實現代碼如下:

Html部分:

電腦鍵盤的實現

CSS部分:

body * {

margin: 0;

padding: 0;

box-sizing: border-box;

font-family: Arial, Helvetica, sans-serif;

}

.keyBoard{

max-width: 800px;

padding: 20px;

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

background-color: rgb(197, 197, 197);

border-radius: 10px;

display: none;

grid-template-columns: repeat(30, 15px);

grid-template-rows: repeat(5, 35px);

grid-gap: 5px;

}

.key {

background-color: rgb(243, 243, 243);

border: 2px solid black;

border-radius: 5px;

grid-column: span 2;

font-size: 12px;

text-align: center;

/* padding-top: 17px; */

cursor: pointer;

line-height: 35px;

font-weight: 700;

}

.key:hover {

border: 1px solid #eeeeee;

}

.backspace {

grid-column: span 4;

}

.tab {

grid-column: span 3;

}

.backslash {

grid-column: span 3;

}

.capslock {

grid-column: span 4;

}

.enter {

grid-column: span 4;

}

.leftshift {

grid-column: span 5;

}

.rightshift {

grid-column: span 5;

}

.leftctrl {

grid-column: span 3;

}

.microsoft {

grid-column: span 3;

font-size: 14px;

}

.space {

grid-column: span 13;

}

.input_box{

width: 400px;

height: 60px;

/* border: 1px solid black; */

margin: auto;

margin-top: 100px;

}

.input_box input{

outline: none;

border: none;

width: 100%;

height: 100%;

border: 2px solid #ccc;

border-radius: 8px;

padding: 10px;

font-size: 30px;

}

JS部分

var keyArray = [

{ 'key_name': '`', 'key_val': '192' },

{ 'key_name': '1', 'key_val': '49' },

{ 'key_name': '2', 'key_val': '50' },

{ 'key_name': '3', 'key_val': '51' },

{ 'key_name': '4', 'key_val': '52' },

{ 'key_name': '5', 'key_val': '53' },

{ 'key_name': '6', 'key_val': '54' },

{ 'key_name': '7', 'key_val': '55' },

{ 'key_name': '8', 'key_val': '56' },

{ 'key_name': '9', 'key_val': '57' },

{ 'key_name': '0', 'key_val': '48' },

{ 'key_name': '-', 'key_val': '189' },

{ 'key_name': '=', 'key_val': '187' },

{ 'key_name': 'Backspace', 'key_val': '8' },

{ 'key_name': 'Tab', 'key_val': '9' },

{ 'key_name': 'Q', 'key_val': '81' },

{ 'key_name': 'W', 'key_val': '87' },

{ 'key_name': 'E', 'key_val': '69' },

{ 'key_name': 'R', 'key_val': '82' },

{ 'key_name': 'T', 'key_val': '84' },

{ 'key_name': 'Y', 'key_val': '89' },

{ 'key_name': 'U', 'key_val': '85' },

{ 'key_name': 'I', 'key_val': '73' },

{ 'key_name': 'O', 'key_val': '79' },

{ 'key_name': 'P', 'key_val': '80' },

{ 'key_name': '[', 'key_val': '219' },

{ 'key_name': ']', 'key_val': '221' },

{ 'key_name': "\\ ", 'key_val': '220' },

{ 'key_name': 'CapsLock', 'key_val': '20' },

{ 'key_name': 'A', 'key_val': '65' },

{ 'key_name': 'S', 'key_val': '83' },

{ 'key_name': 'D', 'key_val': '68' },

{ 'key_name': 'F', 'key_val': '70' },

{ 'key_name': 'G', 'key_val': '71' },

{ 'key_name': 'H', 'key_val': '72' },

{ 'key_name': 'J', 'key_val': '74' },

{ 'key_name': 'K', 'key_val': '75' },

{ 'key_name': 'L', 'key_val': '76' },

{ 'key_name': ';', 'key_val': '186' },

{ 'key_name': "'", 'key_val': '222' },

{ 'key_name': 'Enter', 'key_val': '13' },

{ 'key_name': 'Shift', 'key_val': '16' },

{ 'key_name': 'Z', 'key_val': '90' },

{ 'key_name': 'X', 'key_val': '88' },

{ 'key_name': 'C', 'key_val': '67' },

{ 'key_name': 'V', 'key_val': '86' },

{ 'key_name': 'B', 'key_val': '66' },

{ 'key_name': 'N', 'key_val': '78' },

{ 'key_name': 'M', 'key_val': '77' },

{ 'key_name': ',', 'key_val': '188' },

{ 'key_name': '.', 'key_val': '190' },

{ 'key_name': '/', 'key_val': '191' },

{ 'key_name': 'Shift', 'key_val': '16' },

{ 'key_name': 'Ctrl', 'key_val': '17' },

{ 'key_name': 'Alt', 'key_val': '18' },

{ 'key_name': 'Home', 'key_val': '36 ' },

{ 'key_name': 'Space', 'key_val': '32' },

{ 'key_name': 'Home', 'key_val': '36' },

{ 'key_name': 'Alt', 'key_val': '18' },

{ 'key_name': 'Ctrl', 'key_val': '17' },

{ 'key_name': 'Fn', 'key_val': '00' },

]

var keyBoard = document.getElementsByClassName('keyBoard')[0]

function renderKeyBoard(keyArray) {

var template = '';

for (var i = 0; i < keyArray.length; i++) {

if (keyArray[i].key_val == '8') {

template += "

" + keyArray[i].key_name + "
";

} else if (keyArray[i].key_val == '9') {

template += "

" + keyArray[i].key_name + "
";

} else if (keyArray[i].key_val == '220') {

template += "

" + keyArray[i].key_name + "
";

} else if (keyArray[i].key_val == '20') {

template += "

" + keyArray[i].key_name + "
";

} else if (keyArray[i].key_val == '13') {

template += "

" + keyArray[i].key_name + "
";

} else if (keyArray[i].key_val == '16') {

template += "

" + keyArray[i].key_name + "
";

} else if (keyArray[i].key_val == '16') {

template += "

" + keyArray[i].key_name + "
";

} else if (keyArray[i].key_val == '17') {

template += "

" + keyArray[i].key_name + "
";

} else if (keyArray[i].key_val == '36') {

template += "

" + keyArray[i].key_name + "
";

}

else if (keyArray[i].key_val == '32') {

template += "

" + keyArray[i].key_name + "
";

}

else {

template += "

" + keyArray[i].key_name + "
";

}

}

// console.log(template)

keyBoard.innerHTML = template;

}

renderKeyBoard(keyArray)

var key_div = document.getElementsByClassName('key');

// console.log(key_div)

$("#myinput").on("focus", function (e) {

// console.log(e.keyCode)

keyBoard.style.display = 'grid'

});

$("#myinput").on("keydown", function (e) {

console.log(e.target.value)

if(e.target.value != ''){

for (var i = 0; i < key_div.length; i++) {

var key_val = Number(key_div[i].getAttribute('data-key'));

if (key_val === e.keyCode) {

key_div[i].style.color = '#fff';

key_div[i].style.backgroundColor = '#9F79EE'

} else {

key_div[i].style.color = ''

key_div[i].style.backgroundColor = ''

}

}

}

});

$("#myinput").on("keyup", function (e) {

for (var i = 0; i < key_div.length; i++) {

key_div[i].style.color = ''

key_div[i].style.backgroundColor = ''

}

});

$("#myinput").on("blur", function (e) {

// console.log(e.keyCode)

keyBoard.style.display = 'none'

});

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

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

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

相關文章

Apache Mahout:入門

最近&#xff0c;我有一個有趣的問題要解決&#xff1a;如何使用自動化對不同來源的文本進行分類&#xff1f; 前一段時間&#xff0c;我讀到一個有關該項目以及許多其他文本分析工作的項目– Apache Mahout 。 盡管它不是一個非常成熟的版本&#xff08;當前版本為0.4 &#x…

Javascript中最常用的55個經典技巧(轉)

1. οncοntextmenu"window.event.returnValuefalse" 將徹底屏蔽鼠標右鍵 <table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消選取、防止復制 3. οnpaste"…

向數組添加元素 java_java如何向數組里添加元素

向數組里添加一個元素怎么添加&#xff0c;這兒總結有三種方法&#xff1a;1、一般數組是不能添加元素的&#xff0c;因為他們在初始化時就已定好長度了&#xff0c;不能改變長度。但有個可以改變大小的數組為ArrayList&#xff0c;即可以定義一個ArrayList數組&#xff0c;然后…

JBoss Drools –入門

這篇文章是關于我如何掌握JBoss Drools的 。 其背后的原因是&#xff1a;SAP收購了我公司當前的規則引擎&#xff0c;而Drools是我們將尋找的另一種選擇&#xff0c;只要有人掌握了概念驗證的技能即可。 盡管似乎有大量的文檔&#xff0c;但是我總是會通過示例來發現它是有幫助…

android使用bintray發布aar到jcenter

前言 這兩天心血來潮突然想把自己的android library的aar放到jcenter里面&#xff0c;這樣一來自己便可以在任何時間任何地點通過internet得到自己的library的引用了&#xff0c;況且現在android studio已經默認使用jcenter的repositories作為依賴來源&#xff0c;以前的mavenc…

Java不是文明語言嗎?

幾周前&#xff0c;我有機會學習iOS編程。 我的老板認為我更像是“計算機科學家”&#xff0c;而不是開發人員&#xff0c;這意味著我可以將自己的知識應用于開發一兩個iPad應用程序–我要做的就是學習Objective-C&#xff0c; iOS SDK&#xff1a;到底有多難&#xff1f; 盡管…

PHP 進程詳解

PHP 進程詳解PHP 進程詳解 如下內容從《操作系統精髓與設計原理》中總結提煉得出&#xff0c;刪除了大部分對于理解進程有干擾的文字&#xff0c;對進程知識結構進行的梳理。幾乎所有內容為按照書本上摘抄下來的&#xff0c;我目前還總結提煉不出像作者這么深刻的見解。那么就先…

35. Search Insert Position

public class Solution {public int searchInsert(int[] nums, int target) {int lennums.length;int i0;for(;i<len;i){if(nums[i]>target)break;}return i;} } 轉載于:https://www.cnblogs.com/aguai1992/p/5351442.html

MySQL 后from多個表_MYSQL回顧(多表查詢相關)

前言簡單的數據我們可以直接從一個表中獲取&#xff0c;但在真實的項目中查詢符合條件的數據通常需要牽扯到多張表&#xff0c;這就不得不使用多表查詢。多表查詢分為多表連接查詢、符合條件鏈接查詢、子查詢。多表連接查詢包括內連接、外連接、全連接。符合條件連接查詢本質上…

玩! 框架+ Google Guice

在我目前正在工作的項目中&#xff0c;我們開始使用Google Guice。 對于那些不知道的人&#xff0c; Google Guice是一個依賴項注入框架。 依賴項注入背后的基本思想是提供一個它依賴的類&#xff0c;而不是使依賴類負責實例化它所依賴的對象。 Play具有用于整合Guice的模塊&am…

java都要caps標點_第 1 章 管理 Java CAPS 用戶

第 1 章 管理 Java CAPS 用戶在此處列出的主題提供了有關如何管理 Sun JavaTM Composite Application Platform Suite (Java CAPS) 中的用戶的信息。如果您有任何問題&#xff0c;請參見 http://goldstar.stc.com/ 中的 Java CAPS Web 站點。管理系統信息庫用戶此類別包含以下用…

基于OpenCV 的美顏相機推送直播流

程序流程&#xff1a; 1.圖像采集 先從opencv&#xff08;2.4.10版本&#xff09;采集回來攝像頭的圖像&#xff0c;是一幀一幀的 每一幀圖像是一個矩陣&#xff0c;opencv中的mat 數據結構。 2.人臉的美化 人臉美化&#xff0c;我們用的皮膚檢測&#xff0c;皮膚在顏色空間是特…

Linux驅動開發常用頭文件

頭文件目錄中總共有32個.h頭文件。其中主目錄下有13個&#xff0c;asm子目錄中有4個&#xff0c;linux子目錄中有10個&#xff0c;sys子目錄中有5個。這些頭文件各自的功能如下&#xff1a; 1、主目錄 <a.out.h>&#xff1a;a.out頭文件&#xff0c;定義了a.out執行文件格…

Spring線程池服務

線程池對于執行同步和異步過程非常重要。 本文介紹如何使用Spring開發和監視線程池服務。 創建線程池已通過兩種替代方法進行了說明。 二手技術 &#xff1a; JDK 1.6.0_21 Spring3.0.5 Maven的3.0.2 步驟1&#xff1a;建立已完成的專案 創建一個Maven項目&#xff0c;如下…

我的世界java村民繁殖_我的世界:Java19w08a更新,村民加強守衛,小狐貍背叛

雖然這句話很繞口&#xff0c;其實意思很簡單&#xff0c;那就是之前的隱身藥水沒有什么用&#xff0c;該被打還是被打。因為這個可是害慘了流浪商人&#xff0c;不過這次好了&#xff0c;流浪商人在喝了隱身藥水之后就能安全度過晚上了。NO.3 皮革馬鎧馬鎧是屬于馬的盔甲&…

歐萊雅眉筆banner個人設計

眉筆名稱&#xff1a;眉筆大師三頭塑形眉筆 &#xff0c;之所以沒用吧這個商品名稱放大&#xff0c;是我覺得它是一個名稱&#xff0c;而我把自己想的廣告詞“出彩只需一筆” 放大不僅能凸顯出這只筆的強大&#xff0c;還表示了一種有了我這支眉筆你會更出彩更漂亮&#xff0c…

使用帶有注釋和JQuery的Spring MVC 3的Ajax

與Ajax一起工作對我來說一直很有趣&#xff01; 是不是 &#xff1f; 我將使您輕松將Ajax與Spring MVC 3和JQuery結合使用。 這篇文章將向您說明如何在工業編碼的現實生活中使用Ajax。 和往常一樣&#xff0c;我們將在Spring MVC 3框架中以Ajax的實際示例為例&#xff0c;并將其…

ThinkPHP 3 的輸出

一、ThinkPHP 3 的輸出 &#xff08;重點&#xff09;a、通過 echo 等PHP原生的輸出方式在頁面中輸出b、通過display方法輸出想分配變量可以使用assign方法c、修改左右定界符休要修改配置文件中的配置項TMPL_L_DELIM><{, //修改左定界符TMPL_R_DELIM>}>, //修…

java百度云文件上傳_關于如何在自己項目集成百度云BCE文件上傳STS方案

1、 項目背景由于本人項目需要&#xff0c;需要在視頻點播服務之中需要加載字幕文件(通用格式srt)&#xff0c;經過比較好幾家的公有云服務&#xff0c;最后選擇只有百度云提供字幕服務。字幕&#xff1a;我們通常在觀看外語電影的是&#xff0c;沒有國語版時候只能通過下載字幕…

Java 7 – NIO文件革命

Java 7&#xff08;“項目代幣”&#xff09;已于去年7月問世。 此版本中的新增功能很有用&#xff0c;例如&#xff0c;嘗試使用資源–從try塊自動處理可關閉的資源&#xff0c;switch語句中的字符串&#xff0c;用于異常的multicatch以及用于使用泛型的<>運算符。 每個…