博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
input输入框记录快捷键组合
阅读量:7109 次
发布时间:2019-06-28

本文共 3718 字,大约阅读时间需要 12 分钟。

hot3.png

快捷键保存,一个是用几个select让用户去选择ctrl+alt+字母数字 的组合,另一种是input输入框让用户直接按下记录下来,当然第二种更方便.

在一个node-webkit客户端用Angular.js来绑定一些事件,实现了这个功能.

代码如下:

        
屏幕截图        

//保存上次快捷键var lastHotkey="";//设置快捷键$scope.sethotKey = function($event){      var keyValue=[];      if($event.ctrlKey) keyValue.push("Ctrl");      if($event.altKey) keyValue.push("Alt");      if($event.shiftKey) keyValue.push("Shift");      var keyCodeMap={"48":"0","49":"1","50":"2","51":"3","52":"4","53":"5","54":"6","55":"7","56":"8","57":"9","65":"A","66":"B","67":"C","68":"D","69":"E","70":"F","71":"G","72":"H","73":"I","74":"J","75":"K","76":"L","77":"M","78":"N","79":"O","80":"P","81":"Q","82":"R","83":"S","84":"T","85":"U","86":"V","87":"W","88":"X","89":"Y","90":"Z"};     if(keyCodeMap[$event.keyCode]){       keyValue.push(keyCodeMap[$event.keyCode]);           }     $event.target.value = keyValue.join("+");     CURSOR_LOCATOR.setCursorPosition($event.target,"end");     $event.preventDefault();     if(keyValue.length>=2&&keyCodeMap[$event.keyCode]){        $($event.target).removeClass("uk-form-danger").addClass("uk-form-success");          global.EVENT.emit("globalShortcutReg","getMessage",true);          lastHotkeyGetmessage=$event.target.value;     }else{        $($event.target).addClass("uk-form-danger").removeClass("uk-form-success");               return false;     }    };/* CURSOR_LOCATOR * textarea或input 光标操作函数 * getPosition(t) 获得位置信息 * getCursorPosition(t) 光标位置 * setCursorPosition(t, p) 设置光标位置 * add(t,txt) 添加内容到光标处 */var CURSOR_LOCATOR = {    getPosition:function(t){        var o = t.getBoundingClientRect();        var w = t.offsetWidth;        var h = t.offsetHeight;        var s = t.style;        return {top:o.top, left:o.left, width:w, height:h , style:s};    },      getCursorPosition: function(t){        if (document.selection) {            t.focus();            var ds = document.selection;            var range = null;            range = ds.createRange();            var stored_range = range.duplicate();            stored_range.moveToElementText(t);            stored_range.setEndPoint("EndToEnd", range);            t.selectionStart = stored_range.text.length - range.text.length;            t.selectionEnd = t.selectionStart + range.text.length;            return t.selectionStart;        } else return t.selectionStart    },      setCursorPosition:function(t, p){        var n = p == 'end' ? t.value.length : p;        if(document.selection){            var range = t.createTextRange();            range.moveEnd('character', -t.value.length);                   range.moveEnd('character', n);            range.moveStart('character', n);            range.select();        }else{            t.setSelectionRange(n,n);            t.focus();        }    },      add:function (t, txt,addPosition){        var val = t.value;        var wrap = wrap || '' ;        if(document.selection){            document.selection.createRange().text = txt;        } else {          if(typeof(addPosition)!="undefined"){            var ubbLength = t.value.length;            t.value = t.value.slice(0,addPosition) + txt + t.value.slice(addPosition, ubbLength);          }else{              var cp = t.selectionStart;              var ubbLength = t.value.length;              t.value = t.value.slice(0,t.selectionStart) + txt + t.value.slice(t.selectionStart, ubbLength);              this.setCursorPosition(t, cp + txt.length);          }        };    },      del:function(t, n){        var p = this.getCursorPosition(t);        var s = t.scrollTop;        t.value = t.value.slice(0,p - n) + t.value.slice(p);        this.setCursorPosition(t ,p - n);    }};

转载于:https://my.oschina.net/u/265765/blog/335939

你可能感兴趣的文章
图说苹果工作站-MAC PRO
查看>>
不等不靠不要,程序员自己减轻“辛苦”
查看>>
MySQL数据库root账户密码忘记两种处理方法(保有效)
查看>>
利用SQL注入漏洞拖库
查看>>
集合已修改;枚举操作可能无法执行。使用foreach 循环删除DataRow的时候的问题! 该死的AcceptChanges() Row.elete() Remove(Row)使用不同。...
查看>>
Hudson保存WebDriver测试执行失败的截图
查看>>
Processing XML with Java
查看>>
一个不错的开源wiki
查看>>
有一个无效 SelectedValue,因为它不在项目列表中
查看>>
(转)如何增加SignalTap II能觀察的reg與wire數量? (SOC) (Quartus II) (SignalTap II)
查看>>
各种数据库简单连接
查看>>
程序员的运动建议(转载)
查看>>
SQL Server Service Broker 基础知识 PPT 文档 – 分享下载!
查看>>
JSTAB选项卡
查看>>
SPOJ 4556 Think I will Buy Me a Football Team
查看>>
VC/MFC如何设置对话框背景颜色
查看>>
【图说天下】数据之美:中国互联网上市企业分析报告
查看>>
九格游戏最少移动步数算法实现
查看>>
log4j 配置示例(将log写入文件)log4j 1.2.16
查看>>
对makefile中 $*的理解
查看>>