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 += ""
}
}
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")
}