92 行
		
	
	
		
			无行尾
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			92 行
		
	
	
		
			无行尾
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| jQuery.fn.shortkeys = jQuery.fn.keys = function (obj, settings) {		
 | |
| 	var el = this;
 | |
| 	this.settings = jQuery.extend({
 | |
| 			split: "+",
 | |
| 			moreKeys: {}			
 | |
| 		}, settings || {});	
 | |
| 	this.wackyKeys = { '.': 190, ',': 188, ';': 59,	'Space': 32	};	
 | |
| 	this.formElements  = new Array("input", "select", "textarea", "button");
 | |
| 	this.keys = new Array();	
 | |
| 	this.onFormElement = false;
 | |
| 	this.keysDown = new Array();
 | |
| 	this.init = function (obj) {
 | |
| 		for(x in this.wackyKeys) {
 | |
| 			this.wackyKeys[x.toUpperCase()] = this.wackyKeys[x];
 | |
| 		}
 | |
| 		for(x in obj) {
 | |
| 			this.keys.push(x.split(this.settings.split));
 | |
| 		}
 | |
| 		for(i in this.keys) {
 | |
| 			var quickArr = new Array();
 | |
| 			for(j in this.keys[i]) {
 | |
| 				quickArr.push(this.convertToNumbers(this.keys[i][j].toUpperCase()));
 | |
| 			}
 | |
| 			quickArr.sort();
 | |
| 			this.keys[i] = quickArr;
 | |
| 		}
 | |
| 	};	
 | |
| 	this.convertToNumbers = function (inp) {
 | |
| 		if (this.wackyKeys[inp] != undefined) {
 | |
| 			return this.wackyKeys[inp];
 | |
| 		}
 | |
| 		return inp.toUpperCase().charCodeAt(0);
 | |
| 	};	
 | |
| 	this.keyAdd = function(keyCode) {
 | |
| 		this.keysDown.push(keyCode);
 | |
| 		this.keysDown.sort();
 | |
| 	};
 | |
| 	this.keyRemove = function (keyCode) {
 | |
| 		for(i in this.keysDown) {
 | |
| 			if(this.keysDown[i] == keyCode) {
 | |
| 				this.keysDown.splice(i,1);
 | |
| 			}
 | |
| 		};	
 | |
| 		this.keysDown.sort();	
 | |
| 	};		
 | |
| 	this.keyTest = function (i) {
 | |
| 		if (this.keys[i].length != this.keysDown.length) return false;
 | |
| 		for(j in this.keys[i]) {
 | |
| 			if(this.keys[i][j] != this.keysDown[j]) {
 | |
| 				return false;
 | |
| 			}
 | |
| 		}	
 | |
| 		return true;
 | |
| 	};
 | |
| 	this.keyRemoveAll = function () {
 | |
| 		this.keysDown = new Array();	
 | |
| 	};
 | |
| 	this.focused = function (bool) {
 | |
| 		this.onFormElement = bool;
 | |
| 	}	
 | |
| 	$(document).keydown(function(e) {
 | |
| 		el.keyAdd(e.keyCode);
 | |
| 		var i = 0;
 | |
| 		for(x in obj) {
 | |
| 			if(el.keyTest(i) && !el.onFormElement) {
 | |
| 				obj[x]();
 | |
| 				return false;
 | |
| 				break;	
 | |
| 			}			
 | |
| 			i++;
 | |
| 		};	
 | |
| 	});	
 | |
| 	$(document).keyup(function (e) {
 | |
| 		el.keyRemove(e.keyCode);
 | |
| 	});	
 | |
| 	for(x in this.formElements) {
 | |
| 		$(this.formElements[x]).focus( function () {
 | |
| 			el.focused(true);
 | |
| 		});
 | |
| 		$(this.formElements[x]).blur( function () {
 | |
| 			el.focused(false);
 | |
| 		});
 | |
| 	}	
 | |
| 	$(document).focus( function () {
 | |
| 		el.keyRemoveAll();
 | |
| 	});
 | |
| 	
 | |
| 	this.init(obj);
 | |
| 	jQuery.extend(this.wackyKeys, this.settings.moreKeys);
 | |
| 
 | |
| 	return this;
 | |
| } |