溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用My97DatePicker實現年份多選

發布時間:2020-05-23 05:31:43 來源:網絡 閱讀:1306 作者:Red_Ant_hoyl 欄目:web開發

昨天,咱們嘗試使用Kalendae實現年份的多選事件,結果發現,該插件不能實現月份以及年份的選擇,更不必說年份的多選的事件了。筆者也不愿多做深究,既然My97DatePicker可以定義選擇年份,何不簡單的改寫改寫它。筆者秉著這個思路,繼續往皮毛之下探索。
先看一下My97DatePicker的習性,俗語講知己知彼,是吧。這個插件調用之后會改變調用位置的顯示內容為當前選擇日期。而且還可以給點擊位置之外的地方,賦值(筆者就準備利用這點)。
一、通過My97DatePicker自帶img

    <input readonly="readonly" id="real_function_position" onpropertychange="get_real_select_year()" ><!-- 根據變化的時間,函數位置 -->
    <img  onclick="WdatePicker({el:$dp.$('real_function_position'),dateFmt:'yyyy'})" src="My97DatePicker/skin/datePicker.gif"><!-- 點擊時間的位置 -->

二、通過My97DatePicker插件重新賦值的事件,定義多選函數

    var already_select_year = [];//已將選擇的年份數組,若存在刷新當前。此處的初始值應為,封裝數據所得。并且初始化加載時,應同步顯示已選擇的年份。
            function get_real_select_year(){
                var nowYear = $("#real_function_position").val();
                //判斷,當前年份是否為空
                if(nowYear != null & nowYear != ''){
                    //判斷,當前年份,是否在選的數組中
                    var index = $.inArray(nowYear, already_select_year);
                    if(index > -1){//含有該列,則不做處理
                        return;
                    }else{//展示,用戶的選擇。并數組存儲
                        already_select_year.push(nowYear);
                        //展示
                        document.getElementById("show_user_select").innerHTML +=
                            "<span id="+ nowYear +">" + nowYear + "<img onclick='delete_select("+ nowYear +")' src=''> </span>"
                    } 
                }else{
                    return;
                }
            }

三、年份選擇后的刪除

    //刪除,當前所選年份事件
            function delete_select(id){
                //數組中除去,該元素
                delete_shuzu(already_select_year, id);
                //清除,用戶輸入顯示
                $("#"+ id).remove();
            }
            //刪除數組中的元素
            function delete_shuzu(arry, obj){
                for (var i = 0; i < arry.length;  i++){
                    if(arry[i] == obj){
                        arry.splice(i, 1);
                        break;
                    }       
                }
            }

四、貼出整體代碼

        <!DOCTYPE html>
        <html>
            <head>
                <meta charset="UTF-8">
                <title>My97DatePicker實現年份多選</title>
            </head>
                <script type="text/javascript" src="js/jquery.js" ></script>
                <script type="text/javascript" src="My97DatePicker/WdatePicker.js" ></script>
            <style>
                .select_year{position: relative;}
                .select_year input{position: absolute; left: 8px; top: 0px;}
            </style>
            <body>
                <div id="show_user_select" ></div><!-- 選擇時間后,的顯示位置 -->
                <div class="select_year">
                    <!--若IE低版本,有一個×××警告錯誤“不可見的控件,無法獲取其焦點...”
                    那么請將real_function_position的type="text",本文這里已將該輸入框位置置于img圖形之下
                    onpropertychange只是配IE瀏覽器,此處針對不同類型的瀏覽器應該判斷瀏覽器執行不同的事件
                    例如:oninput 事件等            -->
                    <input readonly="readonly" type="hidden" id="real_function_position" onpropertychange="get_real_select_year()" ><!-- 根據變化的時間,函數位置 -->
                    <img  onclick="WdatePicker({el:$dp.$('real_function_position'),dateFmt:'yyyy'})" src="My97DatePicker/skin/datePicker.gif"><!-- 點擊時間的位置 -->
                </div>
            </body>
            <script>
                var already_select_year = [];//已將選擇的年份數組,若存在刷新界面。此處的初始值應為,封裝數據所得
                function get_real_select_year(){
                    var nowYear = $("#real_function_position").val();
                    //判斷,當前年份是否為空
                    if(nowYear != null & nowYear != ''){
                        //判斷,當前年份,是否在選的數組中
                        var index = $.inArray(nowYear, already_select_year);
                        if(index > -1){//含有該列,則不做處理
                            return;
                        }else{//展示,用戶的選擇。并數組存儲
                            already_select_year.push(nowYear);
                            //展示
                            document.getElementById("show_user_select").innerHTML +=
                                "<span id="+ nowYear +">" + nowYear + "<img onclick='delete_select("+ nowYear +")' src='img/false.png'> </span>"
                        } 
                    }else{
                        return;
                    }
                }
                //刪除,當前所選年份事件
                function delete_select(id){
                    //數組中除去,該元素
                    delete_shuzu(already_select_year, id);
                    //清除,用戶輸入顯示
                    $("#"+ id).remove();
                }
                //刪除數組中的元素
                function delete_shuzu(arry, obj){
                    for (var i = 0; i < arry.length;  i++){
                        if(arry[i] == obj){
                            arry.splice(i, 1);
                            break;
                        }       
                    }
                }
                </script>
        </html>

五、實現效果
利用My97DatePicker實現年份多選
筆者認為,定會有比這更好的實現方式?;蛘吖P者寫的還有未知的bug,期待有興趣的人繼續探究。筆者現在在想,不玩游戲干點啥呢。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女