狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

H5車牌輸入軟鍵盤

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

前言

公司的業務背景是個大型園區,不可避免的要接觸太多與車輛收費相關的業務,于是就有了這個車牌輸入軟鍵盤。對于車牌,用戶手動輸入的是不可信的,而且車牌第一位的地區簡稱打字輸入實在是太麻煩,所以界定用戶的輸入內容,才能讓雙方都更加方便。

預覽: pxsgdsb.github.io/licensePlat… (請使用移動端打開)

github:github.com/pxsgdsb/lic…

gitee:gitee.com/PxStrong/li…

實現

因為車牌內容是固定的,所以直接寫死在元素內。但是,為了提高組件的復用性,需要做一些簡單的封裝

; (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  默認填充車牌

 * @param {number} config.activeIndex   默認選中下標 (從0開始)

 * @param {function} inputCallBack  輸入事件回調

 * @param {function} deleteCallBack  鍵盤刪除事件回調

 * @param {function} closeKeyCallBack  關閉鍵盤事件回調

 */

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);

    // 監聽輸入

    this.watchKeyboardEvents(function(val){ 

        // 鍵盤輸入回調

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

    },function(){

        // 鍵盤刪除事件回調

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

    },function(){

        // 關閉鍵盤事件回調

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

    })

    // 輸入默認車牌

    if (config.value) {

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

            if (config.value[index]) {

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

            }

        })

    }

    // 選中默認下標

    if(config.activeIndex){

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

    }

};

})(jQuery);

watchKeyboardEvents()函數用于在元素創建完成后創建事件監聽

/**

* 監聽鍵盤輸入

* @param {function} inputCallBack  輸入事件回調

* @param {function} deleteCallBack  鍵盤刪除事件回調

* @param {function} closeKeyCallBack  關閉鍵盤事件回調

*/

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

        let _this = this

        // 輸入框點擊

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

            // 顯示邊框

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

            $(this).addClass("plate_input_this")

            // 彈出鍵盤

            // 關閉別的鍵盤

            $(".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 })

                }

            }

            // 點擊新能源

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

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

            }

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

        })


        // 地域鍵盤輸入事件

        ......

    }

使用時html只需要創建一個根元素,js輸入配置項,自動渲染組件。

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

<script>

let licensePlateselector = new LicensePlateselector();

// 初始化

licensePlateselector.init({

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

    value: "湘A",   // 默認填充車牌

    activeIndex: 2,    // 默認選中下標 (從0開始,不傳時,默認不選中)

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

        console.log(val);

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

        console.log(plate_number);

    },

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

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

        console.log(plate_number);

    },

    closeKeyCallBack:function(){ // 關閉鍵盤事件回調

        console.log("鍵盤關閉");

    },

})

</script>

參數

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

方法

getValue 獲取當前車牌

let plate_number = licensePlateselector.getValue();

setValue 設置車牌

licensePlateselector.setValue("粵A1E9Q3");

clearValue 清空車牌

licensePlateselector.clearValue();

END


查看原文



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