LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

H5車牌輸入軟鍵盤

freeflydom
2023年10月25日 16:51 本文熱度 1542

前言

公司的業(yè)務(wù)背景是個(gè)大型園區(qū),不可避免的要接觸太多與車輛收費(fèi)相關(guān)的業(yè)務(wù),于是就有了這個(gè)車牌輸入軟鍵盤。對(duì)于車牌,用戶手動(dòng)輸入的是不可信的,而且車牌第一位的地區(qū)簡(jiǎn)稱打字輸入實(shí)在是太麻煩,所以界定用戶的輸入內(nèi)容,才能讓雙方都更加方便。

預(yù)覽: pxsgdsb.github.io/licensePlat… (請(qǐng)使用移動(dòng)端打開)

github:github.com/pxsgdsb/lic…

gitee:gitee.com/PxStrong/li…

實(shí)現(xiàn)

因?yàn)檐嚺苾?nèi)容是固定的,所以直接寫死在元素內(nèi)。但是,為了提高組件的復(fù)用性,需要做一些簡(jiǎn)單的封裝

; (function ($) {

function LicensePlateselector() {

    // 輸入框元素

    this.input_dom = `<ul class="plate_input_box">

        <li class="territory_key" data-type="territory_key"></li>

        <li style="margin-right:.8rem;"></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li data-end="end"></li>

        <li data-cls="new_energy" data-end="end" class="new_energy">

            <span>新能源</span>

        </li>

    </ul>`

    // 鍵盤元素

    this.keyboard_dom = `...省略`

}

/**

 * 初始化 車牌選擇器

 * @param {string} config.elem  元素

 * @param {string} config.value  默認(rèn)填充車牌

 * @param {number} config.activeIndex   默認(rèn)選中下標(biāo) (從0開始)

 * @param {function} inputCallBack  輸入事件回調(diào)

 * @param {function} deleteCallBack  鍵盤刪除事件回調(diào)

 * @param {function} closeKeyCallBack  關(guān)閉鍵盤事件回調(diào)

 */

LicensePlateselector.prototype.init = function (config) {

    config = {

        elem: config.elem,

        value: config.value || "",

        activeIndex: config.activeIndex || false,

        inputCallBack: config.inputCallBack || false,

        deleteCallBack: config.deleteCallBack || false,

        closeKeyCallBack: config.closeKeyCallBack || false,

    }

    this.elemDom = $(config.elem);

    this.elemDom.append(this.input_dom);

    this.elemDom.append(this.keyboard_dom);

    // 監(jiān)聽輸入

    this.watchKeyboardEvents(function(val){ 

        // 鍵盤輸入回調(diào)

        if(config.inputCallBack){config.inputCallBack(val);}

    },function(){

        // 鍵盤刪除事件回調(diào)

        if(config.deleteCallBack){config.deleteCallBack();}

    },function(){

        // 關(guān)閉鍵盤事件回調(diào)

        if(config.closeKeyCallBack){config.closeKeyCallBack();}

    })

    // 輸入默認(rèn)車牌

    if (config.value) {

        this.elemDom.find(".plate_input_box li").each(function (index) {

            if (config.value[index]) {

                $(this).text(config.value[index])

            }

        })

    }

    // 選中默認(rèn)下標(biāo)

    if(config.activeIndex){

        this.elemDom.find(".plate_input_box li").eq(config.activeIndex).click();

    }

};

})(jQuery);

watchKeyboardEvents()函數(shù)用于在元素創(chuàng)建完成后創(chuàng)建事件監(jiān)聽

/**

* 監(jiān)聽鍵盤輸入

* @param {function} inputCallBack  輸入事件回調(diào)

* @param {function} deleteCallBack  鍵盤刪除事件回調(diào)

* @param {function} closeKeyCallBack  關(guān)閉鍵盤事件回調(diào)

*/

LicensePlateselector.prototype.watchKeyboardEvents = function(inputCallBack,deleteCallBack,closeKeyCallBack) {

        let _this = this

        // 輸入框點(diǎn)擊

        _this.elemDom.find(".plate_input_box li").click(function (event) {

            // 顯示邊框

            $(".plate_input_this").removeClass("plate_input_this");

            $(this).addClass("plate_input_this")

            // 彈出鍵盤

            // 關(guān)閉別的鍵盤

            $(".territory_keyboard").css("display","none")

            $(".alphabet_keyboard").css("display","none")

            if ($(this).attr("data-type") && $(this).attr("data-type") == "territory_key") {

                if (_this.elemDom.find(".territory_keyboard").css("display") == "none") {

                    _this.elemDom.find(".alphabet_keyboard").animate({ bottom: "-50rem" }).hide()

                    _this.elemDom.find(".territory_keyboard").show().animate({ bottom: 0 })

                }

            } else {

                if (_this.elemDom.find(".alphabet_keyboard").css("display") == "none") {

                    _this.elemDom.find(".territory_keyboard").animate({ bottom: "-50rem" }).hide()

                    _this.elemDom.find(".alphabet_keyboard").show().animate({ bottom: 0 })

                }

            }

            // 點(diǎn)擊新能源

            if ($(this).attr("data-cls") == "new_energy") {

                $(this).empty().removeClass("new_energy").attr("data-cls", "")

            }

            event.stopPropagation();    //  阻止事件冒泡

        })


        // 地域鍵盤輸入事件

        ......

    }

使用時(shí)html只需要?jiǎng)?chuàng)建一個(gè)根元素,js輸入配置項(xiàng),自動(dòng)渲染組件。

<div id="demo"></div>

<script>

let licensePlateselector = new LicensePlateselector();

// 初始化

licensePlateselector.init({

    elem: "#demo",  // 根元素id

    value: "湘A",   // 默認(rèn)填充車牌

    activeIndex: 2,    // 默認(rèn)選中下標(biāo) (從0開始,不傳時(shí),默認(rèn)不選中)

    inputCallBack:function(val){ // 輸入事件回調(diào)

        console.log(val);

        let plate_number = licensePlateselector.getValue(); // 獲取當(dāng)前車牌

        console.log(plate_number);

    },

    deleteCallBack:function(){ // 鍵盤刪除事件回調(diào)

        let plate_number = licensePlateselector.getValue(); // 獲取當(dāng)前車牌

        console.log(plate_number);

    },

    closeKeyCallBack:function(){ // 關(guān)閉鍵盤事件回調(diào)

        console.log("鍵盤關(guān)閉");

    },

})

</script>

參數(shù)

參數(shù)類型必填說明示例值
elemString指定元素選擇器"#demo"
valueString默認(rèn)填充車牌"湘A"
activeIndexnumber當(dāng)前輸入框下標(biāo),從0開始,不傳時(shí),默認(rèn)不選中2
inputCallBackfunction輸入事件回調(diào)函數(shù),返回參數(shù):當(dāng)前輸入的值
deleteCallBackfunction鍵盤刪除事件回調(diào)函數(shù)
closeKeyCallBackfunction關(guān)閉鍵盤事件回調(diào)函數(shù)

方法

getValue 獲取當(dāng)前車牌

let plate_number = licensePlateselector.getValue();

setValue 設(shè)置車牌

licensePlateselector.setValue("粵A1E9Q3");

clearValue 清空車牌

licensePlateselector.clearValue();

END


查看原文



該文章在 2023/10/25 16:51:51 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲一区天堂午夜 | 精品国产高清免费第一区二区三区 | 婷婷中文字幕视频在线 | 亚洲欧美日本国产专区一区 | 日韩免费Av中文字幕五月天 | 中文字幕不卡精品视频在线 |