123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- /*
- * numkeyboard 1.0
- * Copyright (c) 2014 BowenLuo http://www.luobo.com/
- * Date: 2014-06-08
- * Example:$(".numkeyboard").numkeyboard();
- */
- (function($) {
- $.fn.numkeyboard = function(options) {
- var defaults = {
- keyboardRadix : 1000,// 图片停留时间
- animatetime : 300, // 图片滑动所需时间
- mainbackground : '#C8BFE7', // 轮播方向
- menubackground : '#4A81B0', // 轮播方向
- exitbackground : '#4376A0', // 轮播方向
- buttonbackground : '#ff730e', // 轮播方向
- clickeve : false
- // 是否绑定元素click事件
- }
- var options = $.extend(defaults, options);
- var keyboardRadix = options.keyboardRadix;
- if (keyboardRadix < 300) {
- keyboardRadix = 300;
- }
- var numkeyboardcount = 0;
- var activeinputele;
- this.each(function() {
- numkeyboardcount++;
- // 添加唯一的数字键盘
- if (numkeyboardcount < 2) {
- keyBoardId = randomOnlyId();
- $("body").append(
- "<div id='" + keyBoardId + "' class='auth_keybord'>" + "<div id='auth_keybord_exit' class='auth_keybord_exit'>关闭</div>" + "<div id='auth_keybord_menu' class='auth_keybord_menu'></div>" + "<ul class='number_list' id='number_list'>" + "<li><button type='button'>7</button></li>" + "<li><button type='button'>8</button></li>" + "<li><button type='button'>9</button></li>" + "<li><button type='button'>4</button></li>" + "<li><button type='button'>5</button></li>" + "<li><button type='button'>6</button></li>" + "<li><button type='button'>1</button></li>" + "<li><button type='button'>2</button></li>" + "<li><button type='button'>3</button></li>" + "<li><button type='button'>0</button></li>" + "<li><button type='submit'>清除</button></li>"
- + "<li><button type='submit'>确认</button></li>" + "</ul></div>");
- }
- // 元素选择器
- var inputele = $(this);
- var keyboard = $("#" + keyBoardId + "");
- var keyboard_exit = keyboard.children('div:first');
- var keyboard_menu = keyboard.children('div:eq(1)');
- var keyboard_buttonul = keyboard.find('ul:first');
- var keyboard_buttonli = keyboard_buttonul.children('li');
- var keyboard_button = keyboard_buttonli.children('button');
- // 元素css样式控制
- keyboard.css({
- "position" : "absolute",
- "z-index" : "10",
- "display" : "none",
- "background" : options.mainbackground,
- overflow : "hidden",
- "width" : keyboardRadix * 0.58,
- "height" : keyboardRadix * 0.45,
- "border-radius" : keyboardRadix * 0.01
- });
- keyboard_exit.css({
- "position" : "absolute",
- "z-index" : "1",
- "right" : "0",
- "background" : options.exitbackground,
- "cursor" : "pointer",
- "text-align" : "center",
- "width" : keyboardRadix * 0.16,
- "height" : keyboardRadix * 0.081,
- "border-top-right-radius" : keyboardRadix * 0.01,
- "line-height" : keyboardRadix * 0.081 + "px",
- "font-family" : "'微软雅黑',arial",
- "font-size" : keyboardRadix * 0.036 + "px",
- "corlor" : "#000",
- "letter-spacing" : keyboardRadix * 0.005
- });
- keyboard_menu.css({
- position : "relative",
- background : options.menubackground,
- cursor : "move",
- margin : "auto",
- width : keyboardRadix * 0.6,
- height : keyboardRadix * 0.081,
- "border-top-left-radius" : keyboardRadix * 0.01,
- "border-top-right-radius" : keyboardRadix * 0.01
- });
- keyboard_buttonul.css({
- position : "relative",
- margin : "auto",
- "margin-top" : keyboardRadix * 0.02 + "px",
- width : keyboardRadix * 0.54,
- height : keyboardRadix * 0.20
- });
- keyboard_buttonli.css({
- position : "relative",
- margin : "auto",
- overflow : "hidden",
- "float" : "left",
- width : keyboardRadix * 0.15,
- height : keyboardRadix * 0.085
- });
- var buttonborder = String(keyboardRadix * 0.001 + "px solid " + options.buttonbackground);
- keyboard_button.css({
- "position" : "relative",
- "float" : "left",
- padding : "0",
- "cursor" : "pointer",
- "background" : options.buttonbackground,
- "text-align" : "center",
- "width" : keyboardRadix * 0.14,
- "height" : keyboardRadix * 0.08,
- "border-radius" : keyboardRadix * 0.004,
- border : buttonborder,
- "line-height" : keyboardRadix * 0.08 + "px",
- margin : "0 0 0 " + keyboardRadix * 0.01 + "px",
- "font-family" : "'微软雅黑',arial",
- "font-size" : keyboardRadix * 0.032 + "px",
- "color" : "#fff"
- });
- keyboard_button.mousedown(function() {
- $(this).css({
- background : "#666",
- top : "2px"
- });
- }).mouseup(function() {
- $(this).css({
- background : options.buttonbackground,
- top : "0"
- });
- });
- keyboard_exit.click(function() {
- exit(options.clickeve);
- });
- inputele.focus(function(event) {
- activeinputele = $(this);
- var p = GetScreenPosition(this);
- // var left = document.body.clientWidth - ($(this).width() +
- // 520);
- // var top = document.body.clientHeight - ($(this).height() +
- // 500);
-
- var left = p.x - ($(this).width() - 200);//170
- var top = p.y < 500 ? 360 : (360+p.y - $(this).height() * 10); //40
- if (keyboard.css("display") == "none") {
- keyboard.css({
- "display" : "block",
- "left" : left,
- "top" : top
- });
- getElem('score_cur').value = '';
- mouseDrag();
- touchDrag();
- }
- });
- if (options.clickeve) {
- inputele.click(function() {
- activeinputele = $(this);
- var p = GetScreenPosition(this);
- if (keyboard.css("display") == "none") {
- keyboard.css({
- "display" : "block",
- "left" : p.x,
- "top" : p.y + $(this).height() * 1.2
- });
- getElem('score_cur').value = '';
- mouseDrag();
- touchDrag();
- }
- });
- }
- if (numkeyboardcount < 2) {
- for (var i = 0; i < keyboard_button.length; i++) {
- numbuttonclick(i);
- }
- }
- function randomOnlyId() {
- var tempRandom = String(Date.now());
- var tempRandomLength = tempRandom.length;
- tempRandom = tempRandom.substring(tempRandomLength - 5, tempRandomLength - 1);
- var randomId = "auth_keybord" + tempRandom;
- if ($("#randomId").length > 0) {
- randomOnlyId()
- } else {
- return randomId;
- }
- }
- function getElem(id) {
- return document.getElementById(id);
- }
- function numbuttonclick(buttonnum) {
- keyboard_buttonli.children('button:eq(' + buttonnum + ')').click(function(e) {
- var buttontext = keyboard_buttonli.children('button:eq(' + buttonnum + ')').text();
- if (buttontext / 1) {
- clickkey(buttontext / 1);
- } else {
- if (buttontext == "0") {
- clickkey(0);
- }
- if (buttontext == "确认") {
- //backspace();
- exit(true)
- }
- if (buttontext == "清除") {
- keyclear();
- }
- }
- })
- }
- function keyclear() {
- activeinputele.val("");
- }
- function backspace() {
- var inputtext = activeinputele.val();
- if (inputtext.length > 0) {
- inputtext = inputtext.substring(0, inputtext.length - 1);
- activeinputele.val(inputtext);
- }
- }
- function clickkey(num) {
- var inputtext = activeinputele.val();
- inputtext = inputtext + num;
- if (activeinputele.attr('max')) {
- if (parseInt(inputtext) < parseInt(activeinputele.attr('max'))) {
- activeinputele.val(inputtext);
- }
- } else
- activeinputele.val(inputtext);
- }
- function exit(flag) {
- debugger
- keyboard.css({
- "display" : "none"
- });
- console.log(keyboard+'**');
- //调用angularjs中的方法
- if(flag) {
- var score = getElem('score_cur').value;
- var appElement = document.querySelector('[ng-controller=LoginCtrl]');
- var $scope = angular.element(appElement).scope();
- if(score > 100) {
- alert('打的分值不能超过100!');
- return;
- }
- if(score.length > 3) {
- alert('不能输入超过3位的数字!');
- return;
- }
- if((score !=='' && score !== undefined) || score === 0 ) {
- $scope.saveJudgeScore();
- }
- }
- }
- function GetScreenPosition(object) {
- var position = {};
- position.x = object.offsetLeft;
- position.y = object.offsetTop;
- while (object.offsetParent) {
- position.x = position.x + object.offsetParent.offsetLeft;
- position.y = position.y + object.offsetParent.offsetTop;
- if (object == document.getElementsByTagName("body")[0]) {
- break;
- } else {
- object = object.offsetParent;
- }
- }
- return position;
- }
- function mouseDrag() {
- var moveEle = keyboard;
- var eventEle = keyboard_menu;
- var stx = etx = curX = sty = ety = curY = 0;
- var MAction = false;
- var eleLeft = +moveEle.css("left").split('px')[0];
- var eleTop = +moveEle.css("top").split('px')[0];
- eventEle.mousedown(function(event) {
- MAction = true;
- stx = event.pageX;
- sty = event.pageY;
- eleLeft = +moveEle.css("left").split('px')[0];
- eleTop = +moveEle.css("top").split('px')[0];
- event.preventDefault();
- }).mousemove(function(event) {
- if (MAction) {
- var curX = event.pageX - stx;
- var curY = event.pageY - sty;
- moveEle.css({
- "left" : eleLeft + curX,
- "top" : eleTop + curY
- });
- event.preventDefault();
- }
- });
- $("body").mouseup(function(event) {
- stx = etx = curX = sty = ety = curY = 0;
- MAction = false;
- });
- }
- function touchDrag() {
- var moveEle = keyboard;
- var eventEle = keyboard_menu;
- var stx = sty = etx = ety = curX = curY = 0;
- var TAction = false;
- var eleLeft = +moveEle.css("left").split('px')[0];
- var eleTop = +moveEle.css("top").split('px')[0];
- eventEle.on("touchstart", function(event) { // touchstart
- var event = event.originalEvent;
- TAction = true;
- curX = curY = 0;
- // 元素当前位置
- eleLeft = +moveEle.css("left").split('px')[0];
- eleTop = +moveEle.css("top").split('px')[0];
- // 手指位置
- stx = event.touches[0].pageX;
- sty = event.touches[0].pageY;
- });
- eventEle.on("touchmove", function(event) {
- if (TAction) {
- var event = event.originalEvent;
- event.preventDefault();
- curX = event.touches[0].pageX - stx;
- curY = event.touches[0].pageY - sty;
- // alert(eleLeft+"-"+gundongX);
- moveEle.css({
- "left" : eleLeft + curX,
- "top" : eleTop + curY
- });
- }
- });
- eventEle.on("touchend", function(event) {
- stx = etx = curX = sty = ety = curY = 0;
- MAction = false;
- });
- function getT3d(elem, ename) {
- var elem = elem[0];
- var str1 = elem.style.webkitTransform;
- if (str1 == "")
- return "0";
- str1 = str1.replace("translate3d(", "");
- str1 = str1.replace(")", "");
- var carr = str1.split(",");
- if (ename == "x")
- return carr[0];
- else if (ename == "y")
- return carr[1];
- else if (ename == "z")
- return carr[2];
- else
- return "";
- }
- }
- });
- };
- })(jQuery);
|