var do_ckinput = "y" // 键盘默认开启 // 禁止输入框弹出键盘 $(document).ready(function() { if ($(".pct-ck-page").length > 0) { // $(".pct-ck-page").height(window.innerHeight) } initCkinput() $(window).resize(function() { if ($("#pct-ck-wrapper").length > 0) resetCkSizeAndPosition($("#pct-ck-wrapper"), $(".pct-ckinput-wrapper input.ck-active").parents(".pct-ckinput-wrapper")) if ($(".pct-ck-page").length > 0) $(".pct-ck-page").height(window.innerHeight) }) }) // 手动初始化输入框 function initCkinput(parm) { if (parm && parm.do_ckinput) do_ckinput = parm.do_ckinput if (do_ckinput == "y") $(".pct-ckinput-wrapper input").attr("readonly", true) if ($(".pct-ck-page").length > 0) $(".pct-ck-page").height(window.innerHeight) } // 创建自定义键盘 $(document).on("click", ".pct-ckinput-wrapper input", function() { popupCkinput($(this)) }) // 当do_ckinput为n时,调用pct-change $(document).on("change", ".pct-ckinput-wrapper input", function() { if (do_ckinput == "n") { var self = $(this) if ($(this).attr("pct-change") && $(this).attr("pct-change") != "") eval($(this).attr("pct-change")) } }) // 自动收起键盘 $(document).on("click", "body", function(e) { // 当点击的目标不是目标输入框与键盘区时,自动收起键盘 if(!$(e.target).parent().hasClass("pct-ckinput-wrapper") && $(e.target).attr("id") != "pct-ck-wrapper" && $(e.target).parents("#pct-ck-wrapper").length == 0) closeCk() }) function popupCkinput(this_elem) { var is_select_all = true // 全选表示 this_elem.select() if (typeof do_ckinput != "undefined" && do_ckinput == "n") return false if ($("#pct-ck-wrapper").length == 0) { $("body").append("
") } var wrapper_elem = $("#pct-ck-wrapper") var texts = [ [1, 2, 3, "退格",] ,[4, 5, 6, ""] ,[7, 8, 9, "收起"] ,["上一个", 0, "下一个", "保存"] ] ,html = "" for (var i = 0; i < texts.length; i++) { var row = texts[i], rl = row.length for (var j = 0; j < rl; j++) { if (j == 0) html += "
" html += ""+row[j]+"" if (j == rl-1) html += "
" } } wrapper_elem.html(html) var that_elem = this_elem resetCkSizeAndPosition(wrapper_elem, that_elem.parents(".pct-ckinput-wrapper")) $(".pct-ckinput-wrapper input").removeClass("ck-active") that_elem.addClass("ck-active") that_elem.removeClass("ck-select-all") wrapper_elem.find("a.ck-col").on("click", function () { switch ($(this).html()) { case "退格": if (is_select_all) { $(that_elem).val("") is_select_all = false $(that_elem).removeClass("ck-select-all") } else { var val = $(that_elem).val() $(that_elem).val(val.substring(0, val.length-1)) } var self = $(that_elem) if ($(that_elem).attr("pct-change") && $(that_elem).attr("pct-change") != "") eval($(that_elem).attr("pct-change")) break case "收起": closeCk() break case "上一个": var that_index = $(".pct-ckinput-wrapper input").index(that_elem) ,prev_elem for (var i = that_index - 1; i >= 0; i--) { if (!$(".pct-ckinput-wrapper input").eq(i).attr("disabled")) { prev_elem = $(".pct-ckinput-wrapper input")[i] break } } if (that_index > 0 && prev_elem) { $(that_elem).removeClass("ck-select-all") that_elem = prev_elem resetCkSizeAndPosition(wrapper_elem, $(that_elem).parents(".pct-ckinput-wrapper")) $(".pct-ckinput-wrapper input").removeClass("ck-active") $(that_elem).addClass("ck-active") $(that_elem).select(function() { is_select_all = true $(that_elem).addClass("ck-select-all") }) $(that_elem).select() } break case "下一个": var that_index = $(".pct-ckinput-wrapper input").index(that_elem) ,next_elem for (var i = that_index + 1; i < $(".pct-ckinput-wrapper input").length; i++) { if (!$(".pct-ckinput-wrapper input").eq(i).attr("disabled")) { next_elem = $(".pct-ckinput-wrapper input")[i] break } } if (that_index < $(".pct-ckinput-wrapper input").length-1 && next_elem) { $(that_elem).removeClass("ck-select-all") that_elem = next_elem resetCkSizeAndPosition(wrapper_elem, $(that_elem).parents(".pct-ckinput-wrapper")) $(".pct-ckinput-wrapper input").removeClass("ck-active") $(that_elem).addClass("ck-active") $(that_elem).select(function() { is_select_all = true $(that_elem).addClass("ck-select-all") }) $(that_elem).select() } break case "": break case "保存": if ($(that_elem).attr("pct-save") && $(that_elem).attr("pct-save") != "") eval($(that_elem).attr("pct-save")) break default: if (is_select_all || $(that_elem).val() == "0") { $(that_elem).val($(this).html()) is_select_all = false $(that_elem).removeClass("ck-select-all") } else { $(that_elem).val($(that_elem).val() + $(this).html()) } var self = $(that_elem) if ($(that_elem).attr("pct-change") && $(that_elem).attr("pct-change") != "") eval($(that_elem).attr("pct-change")) break } }) } // 重置 键盘尺寸与定位 function resetCkSizeAndPosition(wrapper_elem, relative_elem) { if ($("#pct-ck-wrapper-shadow").length == 0) { if ($(".pct-ck-page").length > 0) $(".pct-ck-page").append("
") else $("body").append("
") } // 设置shadow var wrapper_elem_offset_top = relative_elem.offset().top+relative_elem.height()+parseInt(relative_elem.css("padding-top"))+parseInt(relative_elem.css("padding-bottom"))+parseInt(relative_elem.css("margin-bottom")) wrapper_elem.addClass("small-screen") wrapper_elem.css({top: "", left: ""}) $("#pct-ck-wrapper-shadow").height(wrapper_elem.height()+parseInt(wrapper_elem.css("padding-top"))+parseInt(wrapper_elem.css("padding-bottom"))+parseInt(wrapper_elem.css("margin-top"))+parseInt(wrapper_elem.css("margin-bottom"))) if (wrapper_elem.height() - (window.innerHeight - wrapper_elem_offset_top) + 22 > window.scrollY) { window.scrollTo(0, wrapper_elem.height() - (window.innerHeight - wrapper_elem_offset_top) + 22) } } function focusCkinput(id) { popupCkinput($(".pct-ckinput-wrapper input#"+id)) } function closeCk() { $("#pct-ck-wrapper").remove() $("#pct-ck-wrapper-shadow").remove() $(".pct-ckinput-wrapper input").removeClass("ck-active") }