wcKeyBoard.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /**
  2. * @title 数字输入法键盘插件【仿微信】wcKeyBoard-v1.0 beta (UTF-8)
  3. * @Create hison8 3 9070 295
  4. * @Timer 2018/04/27 15:30:45 GMT+0800 (中国标准时间)
  5. */
  6. !function (win) {
  7. var _doc = win.document, _docEle = _doc.documentElement,
  8. util = {
  9. $: function (id) {
  10. return _doc.getElementById(id);
  11. },
  12. touch: function (o, fn) {
  13. o.addEventListener("click", function (e) {
  14. fn.call(this, e);
  15. }, !1);
  16. }
  17. },
  18. wcKeyBoard = function (options) {
  19. var that = this,
  20. config = {
  21. id: 'wcKeyBoard', //弹窗ID标识 (不同ID对应不同弹窗)
  22. resId: '#wcKeyBoardRes'
  23. };
  24. if (!(that instanceof wcKeyBoard)) {
  25. return new wcKeyBoard(options);
  26. }
  27. that.opts = options || {};
  28. for (var i in config) {
  29. if (!(i in that.opts)) {
  30. that.opts[i] = config[i];
  31. }
  32. }
  33. that.init();
  34. };
  35. wcKeyBoard.prototype = {
  36. init: function () {
  37. var that = this, opt = that.opts, keyboradBox = null;
  38. if(util.$(opt.id)) return;
  39. keyboradBox = _doc.createElement("div"); keyboradBox.id = opt.id; keyboradBox.className = "wckeyboard";
  40. keyboradBox.innerHTML = [
  41. '<div class="keyboardPanel">\
  42. <div class="keyboard-tmpl">\
  43. <div class="keyboard-result" id="wcKeyBoardRes" style="display: none;"></div>\
  44. <div class="keyboard-xclose"></div>\
  45. <ul class="clearfix">\
  46. <li class="number">1</li>\
  47. <li class="number">2</li>\
  48. <li class="number">3</li>\
  49. <li class="number">4</li>\
  50. <li class="number">5</li>\
  51. <li class="number">6</li>\
  52. <li class="number">7</li>\
  53. <li class="number">8</li>\
  54. <li class="number">9</li>\
  55. <li class="float">.</li>\
  56. <li class="zero">0</li>\
  57. <li class="del"></li>\
  58. </ul>\
  59. </div>\
  60. </div>'
  61. ].join('');
  62. _doc.body.appendChild(keyboradBox);
  63. that.callback();
  64. },
  65. callback: function () {
  66. var that = this, opt = that.opts, resObj = $(opt.resId);
  67. // 处理数字
  68. $("#" + opt.id).on("click", ".number", function () {
  69. if (resObj.text().indexOf(".") != -1 && resObj.text().substring(resObj.text().indexOf(".") + 1, resObj.text().length).length == 2) {
  70. return;
  71. }
  72. if ($.trim(resObj.text()) == "0") {
  73. return;
  74. }
  75. if (parseInt(resObj.text()) >= 10000 && resObj.text().indexOf(".") == -1) {
  76. return;
  77. }
  78. resObj.text(resObj.text() + $(this).text());
  79. resObj.val(resObj.text());
  80. });
  81. // 处理小数点
  82. $("#" + opt.id).on("click", ".float", function () {
  83. if ($.trim(resObj.text()) == "" || resObj.text().indexOf(".") != -1) {
  84. return;
  85. }
  86. resObj.text(resObj.text() + $(this).text());
  87. resObj.val(resObj.text());
  88. });
  89. // 处理数字0
  90. $("#" + opt.id).on("click", ".zero", function () {
  91. if (resObj.text().indexOf(".") != -1 && resObj.text().substring(resObj.text().indexOf(".") + 1, resObj.text().length).length == 2) {
  92. return;
  93. }
  94. if ($.trim(resObj.text()) == "0") {
  95. return;
  96. }
  97. if (parseInt(resObj.text()) >= 10000 && resObj.text().indexOf(".") == -1) {
  98. return;
  99. }
  100. resObj.text(resObj.text() + $(this).text());
  101. resObj.val(resObj.text());
  102. });
  103. // 处理删除
  104. $("#" + opt.id).on("click", ".del", function () {
  105. resObj.text(resObj.text().substring(0, resObj.text().length - 1));
  106. resObj.val(resObj.text());
  107. });
  108. // 关闭键盘
  109. $("#" + opt.id).on("click", ".keyboard-xclose", function () {
  110. $("#" + opt.id).remove();
  111. });
  112. }
  113. };
  114. win.wcKeyBoard = wcKeyBoard;
  115. }(window);