- 浏览: 312218 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (243)
- Core Java (13)
- Java (12)
- Android (2)
- Lucene (3)
- J2EE (3)
- Hibernate (2)
- Jsp & Servlet (3)
- Struts2 (3)
- Spring (5)
- JSF (6)
- RichFaces (2)
- HTML & JS & DOM & CSS (87)
- browser (1)
- Ajax & A4J (2)
- Workflow (1)
- Maven (3)
- Linux (2)
- VM & VBOX (1)
- Tomcat (1)
- Cache (3)
- Others (36)
- design (1)
- PHP (1)
- Try.js (1)
- HTML5 && CSS3 && ECMAScript5 (26)
- 疯言疯语 (5)
- mongodb (2)
- Hardware Common Sence (1)
- RESTful (3)
- Nginx (2)
- web安全 (8)
- Page Design (1)
- web performance (1)
- nodejs (4)
- python (1)
最新评论
-
New_Mao_Er:
求最新的版本破解啊!!!
Omondo eclipseUML插件破解 -
konglx:
讲得仔细,谢了
全面分析 Spring 的编程式事务管理及声明式事务管理 -
cilendeng:
对所有post有效只能使用过滤器
说说Tomcat的Server.xml的URIEncoding=‘UTF-8’配置 -
jiulingchen:
mark了,灰常感谢!
JAVA中最方便的Unicode转换方法 -
anlaetion:
这算法可以有
js 字符串搜索算法
原理:根据待选择元素与当前选中元素的最短距离来判断下一操作应该选中哪个元素。
代码如下:
/* var arg = { elements:[], current:jqueryObj || index,//index is in elements initCallback:function(){}, moveCallback:function(){}, ensureCallback:function(){} }; */ function KeyMove(arg){ var LEFT = 1,RIGHT = 2,UP = 3,DOWN = 4; function filter(current,arr,direction){ var resultarr = []; if(direction == LEFT){ for(var i=0,len=arr.length;i<len;i++){ if(arr[i]["left"] + arr[i]["width"] < current["left"] && arr[i]["width"] > 0){ resultarr.push(arr[i]); } } }else if(direction == RIGHT){ for(var i=0,len=arr.length;i<len;i++){ if(arr[i]["left"] > current["left"] + arr[i]["width"] && arr[i]["width"] > 0){ resultarr.push(arr[i]); } } }else if(direction == UP){ for(var i=0,len=arr.length;i<len;i++){ if(arr[i]["top"] + arr[i]["height"]< current["top"] && arr[i]["height"] > 0){ resultarr.push(arr[i]); } } }else if(direction == DOWN){ for(var i=0,len=arr.length;i<len;i++){ if(arr[i]["top"] > current["top"] + arr[i]["height"] && arr[i]["height"] > 0){ resultarr.push(arr[i]); } } } return resultarr; } //{top:"",left:""} var elemarr = arg.elements; var positionArr = new Array(elemarr.length); for(var i=0,len=elemarr.length;i<len;i++){ positionArr[i] = $(elemarr[i]).position(); positionArr[i].index = i; positionArr[i].width = $(elemarr[i]).width(); positionArr[i].height = $(elemarr[i]).height(); } var current = isNaN(arg.current) ? arg.current : elemarr[arg.current]; var _arg = { current:null, pre:null, e:null }; var $pre = _arg.current = _arg.pre = $(current); if(typeof arg.initCallback == "function") arg.initCallback.call(_arg); var currentPosition = $(current).position(); currentPosition.width = $(current).width(); currentPosition.height = $(current).height(); addListener(function(){ _arg.e = this.e; if(this.keycode == 37){//left var temparr = filter(currentPosition,positionArr,LEFT); if(temparr.length > 0) current = getMinDistanceElem(currentPosition,temparr); }else if(this.keycode == 39){//right var temparr = filter(currentPosition,positionArr,RIGHT); if(temparr.length > 0) current = getMinDistanceElem(currentPosition,temparr); }else if(this.keycode == 38){//up var temparr = filter(currentPosition,positionArr,UP); if(temparr.length > 0) current = getMinDistanceElem(currentPosition,temparr); }else if(this.keycode == 40){//down var temparr = filter(currentPosition,positionArr,DOWN); if(temparr.length > 0) current = getMinDistanceElem(currentPosition,temparr); }else if(this.keycode == 13){ if(typeof arg.ensureCallback == "function") arg.ensureCallback.call(_arg); } currentPosition = $(current).position(); currentPosition.width = $(current).width(); currentPosition.height = $(current).height(); _arg.current = $(current); if(typeof arg.moveCallback == "function") arg.moveCallback.call(_arg); _arg.pre = $pre = $(current); }); function getMinDistanceElem(current,arr){ var index = 0; var minDistance = 1000000; for(var i=0,len=arr.length;i<len;i++){ var tempdistance = distance(current,arr[i]); if(tempdistance < minDistance){ index = i; minDistance = tempdistance; } } return elemarr[arr[index].index]; } function distance(o1,o2){ return Math.sqrt(Math.pow(o1.left - o2.left,2) + Math.pow(o1.top - o2.top,2)); } function addListener(fn){ if(typeof fn == "function"){ document.addEventListener("keydown",function(event){ //IE doesn't pass in the event object var event = event || window.event; //IE uses srcElement as the target var target = event.target || event.srcElement; var keycode = event.keyCode || event.which; this.target = target; this.keycode = keycode; this.e = event; fn.call(this); },false); } } }
示例见附件。
- keymove.rar (49.7 KB)
- 下载次数: 9
发表评论
-
循环数组的逻辑怎么写
2015-03-23 10:24 646应用场景这样的: var imgUrls = [ ... -
发布`代码生成器`
2014-11-17 00:45 584闲话不说,直接上地址 npm: https://www. ... -
MutationObserver
2014-10-27 15:29 1098MutationObserver MutationObse ... -
a simple mvvm library - bird
2014-10-09 18:26 730see here:https://github.com/i ... -
遍历dom tree是一件相当耗时的事情
2014-09-23 01:15 755遍历dom tree是一件相当耗时的事情,尤其是在遍历的同时 ... -
今天再讲下js里的继承
2014-09-18 00:27 697js的继承说简单也很简单,请看: function ... -
Text 类型
2014-09-05 18:52 845文本节点由Text类型表 ... -
JavaScript插入动态脚本
2014-09-05 18:47 641动态脚本指的是在页面加载时不存在,但将来的某一时刻通过修改该 ... -
innerHTML插入<style>元素
2014-09-05 18:37 1163通过innerHTML写入<style>元素没 ... -
CSS实现相对浏览器窗口定位彻底研究
2014-09-05 18:33 3721Web Developer / Designer 经常需要将 ... -
JavaScript插入动态样式
2014-09-05 18:07 610能够把CSS样式包含到HTML页面中的元素有两个。其中,& ... -
再理解jQuery;delete原型属性
2014-05-13 22:05 1862以前用jQuery的时候曾粗略看了它的源码,但却不求甚解。 ... -
javascript &&和||
2012-07-23 00:38 700一直以为 && 和 || ... -
undefined 和 void 0 的区别
2012-07-20 11:15 703在读backbone源码时看见这么一段代码: if ( ... -
Fiddler - 前端开发值得拥有
2012-07-16 14:41 829最近换了新工作,搬了新家,换了新室友,一切都在重新开始。 ... -
说说我的web前端之路,分享些前端的好书
2012-07-16 14:38 793WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没 ... -
JavaScript实现 页面滚动图片加载
2012-07-16 14:29 687又到了这个月的博客时间了,原计划是打算在这个月做一个的功 ... -
JavaScript 操作 Cookie
2012-07-16 11:18 684从事web开发也有些日 ... -
Javascript定义类(class)的三种方法
2012-07-12 12:35 586程序员们做了很多探索,研究如何用Javascript模拟”类” ... -
服务端解决跨源共享
2012-06-21 10:18 4517跨源资源共享是web开发领域中一个非常有趣的话题,互联网 ...
相关推荐
在这个场景中,我们讨论的是使用JavaScript来实现一个虚拟键盘,这对于触摸屏设备上的输入操作非常有用,比如在移动设备或平板电脑上,用户可能没有物理键盘,此时虚拟键盘就成为了必要的输入工具。 虚拟键盘的实现...
这个小demo展示了如何通过监听键盘事件并处理箭头键的按下,以实现元素的选择切换。以下将详细讲解这一功能的实现原理及步骤。 首先,我们需要了解JavaScript中的事件处理。在JavaScript中,我们可以使用`...
本教程将深入探讨如何使用JS实现一个键盘。 1. **HTML基础结构** 在网页中,你需要一个输入元素,如`<input>`或`<textarea>`,作为用户输入的地方。同时,创建一个包含键盘按钮的`<div>`元素,每个按钮对应键盘上...
总的来说,"HTML JS 虚拟键盘带拼音输入法"是一个集成了HTML界面设计、JavaScript动态交互以及拼音输入法技术的解决方案,旨在提供给Kiosk用户一个高效且友好的汉字输入体验。通过优化界面和输入逻辑,可以大大提高...
在JavaScript(JS)中实现键盘效果,主要是指通过编程方式模拟真实键盘的功能,这在一些特定的场景下非常有用,比如移动设备上的Web应用、在线输入法或游戏等。通过JavaScript,我们可以监听键盘事件,控制页面元素...
本文将详细介绍如何通过JavaScript的键盘事件来控制网页上人物的移动和跳跃,具体实现2D效果。为此,我们将通过示例代码来展示整个过程。首先,我们需要建立一个HTML文档,并通过CSS来设定基本的样式。然后,通过...
综上所述,实现一个JS软键盘需要综合运用JavaScript编程、DOM操作、事件处理、CSS样式设计、字符编码、键盘布局、可访问性、安全性、性能优化以及用户体验等多个方面的知识。通过这个项目,你可以深入理解并实践这些...
通常,这种软键盘会以HTML元素的形式动态生成,并通过JavaScript事件监听来响应用户的点击,模拟真实键盘输入的效果。 描述中提到的"页面代码,及所引用keyboard.js,keyboard.css,keyboard.png",揭示了实现这个...
2. **DOM操作**:创建软键盘UI,通常需要动态生成HTML元素,如按钮代表数字、字母等。利用`document.createElement`,`appendChild`,`innerHTML`等DOM操作方法来构建和布局虚拟键盘。 3. **事件处理**:当用户点击...
在IT领域,JavaScript(简称JS)是一种广泛使用的前端编程语言,尤其在网页交互和动态功能实现上发挥着重要作用。本文将深入探讨如何使用JavaScript来实现虚拟键盘,包括小键盘的功能。 首先,我们要理解虚拟键盘的...
综上所述,实现一个HTML电脑软键盘需要结合HTML、CSS和JavaScript技术。HTML负责创建键盘的布局和结构,CSS提供视觉样式,而JavaScript则赋予键盘交互性。通过不断优化和扩展,我们可以创建出更加复杂、功能丰富的软...
在创建Web软键盘时,开发者通常会通过JavaScript动态创建HTML元素,如`<button>`或`<input>`,这些元素代表软键盘上的每个按键。同时,通过`addEventListener`方法监听按钮点击事件,当用户点击虚拟键时,模拟键盘...
在这个"HTML+CSS+JS实现键盘导航源码特效.zip"中,我们可以期待一个利用这三种技术来创建的键盘导航功能,这种功能通常用于增强用户在网页上的交互体验,特别是对于桌面应用或者复杂网页,键盘导航可以提高操作效率...
1. DOM操作:JavaScript通过Document Object Model (DOM) 来操作HTML元素。为了显示软键盘,需要在页面上动态创建一系列的按钮元素,并将它们布局在合适的位置。 2. 事件监听与处理:每个键盘按钮都需要绑定点击...
实现JS虚拟键盘的关键技术包括HTML、CSS和JavaScript。HTML用于构建键盘布局,CSS则用来美化和定制样式,而JavaScript负责处理键盘的逻辑,如按键响应、中英文切换功能的实现。在中英文切换功能上,通常会有一个切换...
软键盘实现是JavaScript在Web交互中的一个重要功能,通常用于提高用户输入的安全性,例如在处理敏感信息如密码时,防止物理键盘被键盘记录器监听。现在我们来详细探讨JavaScript如何实现软键盘。 首先,软键盘的...
`INDEX.HTM` 通常是网页的主入口文件,它可能包含引入JavaScript脚本和样式表的链接,以及用于展示日期选择器实例的HTML元素。 `QINGJIA_ADD.HTM` 这个文件名暗示了可能是关于请假申请的功能,日期选择器在这种情况...
在JavaScript中,全键盘的实现是通过创建一系列按钮元素,每个按钮代表一个字符,并绑定点击事件。当用户点击按钮时,对应的字符将被插入到输入框中。 2. **小键盘**:小键盘则更专注于数字输入,比如在填写验证码...