Vue结合Jquery 实现网页端数字键盘

  • 效果图
    Vue结合Jquery 实现网页端数字键盘_第1张图片
  • js文件
import $ from 'jquery'

/**
 * 调用键盘
 * @param obj input
 * @param round 小数后几位 0不带小数
 */
export function loadNumberKeyboard(obj, round) {
    if ($("#numberkeyboard").length == 0) {
        let numbtnhtml =
            '
7
8
9
' + '
4
5
6
' + '
1
2
3
' + '
.
0
退格
'; $("body").append('
' + numbtnhtml + '
'); $("#numberkeyboard").find(".numbtn").bind("mousedown", function () { $(this).addClass("numbtndown"); }); $("#numberkeyboard").find(".numbtn").bind("mouseup", function () { $(this).removeClass("numbtndown"); }); } let containerDiv = $("#numberkeyboard").parent(); containerDiv.show(); containerDiv.css("z-index", 9100); obj = $(obj); if (obj.attr("id")) { var objpadding = parseInt(obj.css("padding-top").replace("px", "")) + parseInt(obj.css("padding-bottom").replace("px", "")); if (obj.offset().left + 340 >= $(window).width()) { containerDiv.css("left", $(window).width() - 340); } else { containerDiv.css("left", obj.offset().left); } if (obj.offset().top + 291 + obj.height() + objpadding + 2 + 5 >= $(window).height() + $(window).scrollTop()) { containerDiv.css("top", obj.offset().top - 291 - 5); } else { containerDiv.css("top", obj.offset().top + obj.height() + objpadding + 2 + 5); } } // 点击键盘外隐藏键盘 $('html,body') .click((e) => { let target = e.target; if (target.localName !== 'input' && target.className !== 'numbtn') { containerDiv.hide(); $('.numberkeyboard').hide(); } }) $("#numberkeyboard").find(".numbtn").unbind("click"); $("#numberkeyboard").find(".numbtn").bind("click", function (e) { // obj.focus(); let key = $(this).attr("key"); switch (key) { case "backspace": if (obj.val().length > 0) { obj.val(obj.val().substr(0, obj.val().length - 1)); } break; case "sign": if (obj.val().length > 0) { if (obj.val().substr(0, 1) === "-") { obj.val(obj.val().substr(1, obj.val().length - 1)); } else { obj.val("-" + obj.val()); } } break; case "close": $("#numberkeyboard").find(".numbtn").unbind("click"); containerDiv.hide(); break; default: let newVar = obj.val() + key; if (round === 2) { newVar = newVar.match(/^\d{0,5}(?:\.\d{0,2})?/); } else if (round === 3) { newVar = newVar.match(/^\d{0,5}(?:\.\d{0,3})?/); } else { newVar = newVar.replace(/[^\d]/g, '') } obj.val(newVar); break; } // 模拟输入 obj[0].dispatchEvent(new Event('input')); }); }
  • css文件
#numberkeyboard {
    background-color: rgb(17, 17, 17);
    height: 295px;
    margin: 0;
    padding: 2px;
    position: relative;
    width: 290px;
    border-radius: 5px;
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
}

#numberkeyboard .numbtn {
    border-radius: 5px;
    height: 68px;
    width: 91px;
    background-color: rgba(91, 91, 91, 0.6);
    color: white;
    margin: 2px;
    line-height: 68px;
    text-align: center;
    font-weight: bold;
    font-size: 25px;
}

#numberkeyboard .numbtn:last-child{
    background-color: red;
    font-size: 20px;
}

#numberkeyboard .numbtn:active {
    background-color: #cccccc;
    color: black;
}
  • 使用方式

    1.首先再main.js中引入上方的css文件
    2.vue代码中直接使用即可
    getKeyboardNum(id) {
      loadNumberKeyboard($("#" + id + ""),0)
    },

你可能感兴趣的:(vue.js,jquery,前端)