• 选择控件js插件和使用方法


    记录一下

    选择控件js插件

      1 /*
      2 *   滚动控件,包含地址选择、时间选择、自定义单选
      3 */
      4 //js_inputbox input  输入框
      5 //js_pickviewselect 下拉单项选择
      6 //js_pickviewdate 下拉选择时间                          
      7 //js_pickviewcity 下拉选择地址
      8 //data-options="{title:'下拉的标题',changeValue:自定义事件(左右默认取消确定),datasource:@ViewBag.数据源 后台给的  数据存到隐藏域}"
      9 
     10 $(function () {
     11 
     12     $(document).ready(function () {
     13         $(".js_pickviewdate").pickviewdate();
     14         $(".js_pickviewselect").pickviewselect();
     15         $(".js_pickviewcity").pickviewcity();
     16         $("input.js_inputbox,textarea.js_inputbox").inputbox();
     17     });
     18 
     19     $.fn.pickviewcity = function (options, params) {
     20         if (typeof (options) == "string") {
     21             $.pickview.methods[options](this, params);
     22         }
     23         return this.each(function () {
     24             var state = $.data(this, 'pickviewcity');
     25             if (state) {
     26                 $.extend(state, options);
     27             } else {
     28                 var eleSetting = $(this).attr("data-options");
     29                 if (!eleSetting) {
     30                     eleSetting = { text: "请选择地址" };
     31                 } else {
     32                     eleSetting = eval("(" + eleSetting + ")");
     33                 }
     34                 state = $.extend({}, $.pickviewcity.defaults.config, eleSetting, options);
     35                 state.province = { code: $(this).find("input.pv_province").val() };
     36                 state.city = { code: $(this).find("input.pv_city").val() };
     37                 state.area = { code: $(this).find("input.pv_area").val() };
     38                 $.data(this, 'pickviewcity', state);
     39 
     40 
     41                 $(this).on("click", function () {
     42                     $.pickviewcity.setLastPickElement(this);
     43                     var initData = [];
     44                     if (state.province) {
     45                         initData.push(state.province.code);
     46                     }
     47                     if (state.city) {
     48                         initData.push(state.city.code);
     49                     }
     50                     if (state.area) {
     51                         initData.push(state.area.code);
     52                     }
     53                     if (initData.length <= 0) {
     54                         initData = ["51", "5101", "510101"];
     55                     }
     56                     $.zProtocol({
     57                         type: "Control.PickerViewCity",
     58                         path: "/Create/BodyBottom",
     59                         data: { text: state.text, textColor: state.textColor, fontSize: state.fontSize, menus: state.menus, initialData: initData.join(",") }
     60                     });
     61                 });
     62             }
     63         });
     64     }
     65 
     66     $.fn.pickviewdate = function (options, params) {
     67         if (typeof (options) == "string") {
     68             $.pickview.methods[options](this, params);
     69         }
     70         return this.each(function () {
     71             var state = $.data(this, 'pickviewdate');
     72             if (state) {
     73                 $.extend(state, options);
     74             } else {
     75                 var eleSetting = $(this).attr("data-options");
     76                 if (!eleSetting) {
     77                     return;
     78                 }
     79                 eleSetting = eval("(" + eleSetting + ")");
     80                 state = $.extend({}, $.pickviewdate.defaults.config, eleSetting, options);
     81                 state.value = $(this).find("input:eq(1)").val();
     82                 $.data(this, 'pickviewdate', state);
     83                 if (!state.date) {
     84                     state.value = $(this).find("input:eq(1)").val();
     85                     //未设置或为9999 0001,则设置为当前时间,防止App不响应 by 雷 2017-3-7
     86                     if (!state.value || state.value.indexOf("9999") == 0 || state.value.indexOf("0001") == 0) {
     87                         var now = new Date();
     88                         state.value = now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate();
     89                     }
     90                     state.value = state.value.replace(///g, '-');
     91                     var reg = new RegExp("([0-9]+-[0-9]+-[0-9]+)", "gmi");
     92                     var resultArray = reg.exec(state.value);
     93                     if (resultArray != null) {
     94                         state.value = resultArray[0]; //截取日期 2017-3-8 0:00:00 截为2017-3-8
     95                     }
     96                 }
     97 
     98                 $(this).on("click", function () {
     99                     $.pickviewdate.setLastPickElement(this);
    100                     $.zProtocol({
    101                         type: "Control.PickerViewDate",
    102                         path: "/Create/BodyBottom",
    103                         data: { text: state.title, textColor: state.textColor, fontSize: state.fontSize, menus: state.menus, initialData: state.value }
    104                     });
    105                 });
    106             }
    107         });
    108     }
    109 
    110     $.fn.pickviewselect = function (options, params) {
    111         if (typeof (options) == "string") {
    112             $.pickview.methods[options](this, params);
    113         }
    114         return this.each(function () {
    115             var state = $.data(this, 'pickviewselect');
    116             if (state) {
    117                 $.extend(state, options);
    118             } else {
    119                 var eleSetting = $(this).attr("data-options");
    120                 if (!eleSetting) {
    121                     return;
    122                 }
    123                 eleSetting = eval("(" + eleSetting + ")");
    124                 var saveState = $.extend({}, $.pickviewselect.defaults.config, eleSetting, options);
    125                 $.data(this, 'pickviewselect', saveState);
    126                 var initValue = $(this).find("input:eq(1)").val();
    127 
    128                 var initIndex = 0;
    129                 if (initValue) {
    130                     for (var dIndex in saveState.datasource) {
    131                         if (initValue == saveState.datasource[dIndex].value) {
    132                             $(this).find("input:eq(0)").val(saveState.datasource[dIndex].text);
    133                             initIndex = dIndex;
    134                             break;
    135                         }
    136                     }
    137                 }
    138                 saveState.selectIndex = initIndex;
    139 
    140                 if (saveState.value) {
    141                     for (var dIndex in saveState.datasource) {
    142                         if (saveState.value == saveState.datasource[dIndex].value) {
    143                             $(this).find("input:eq(0)").val(saveState.datasource[dIndex].text);
    144                             break;
    145                         }
    146                     }
    147                 }
    148 
    149                 $(this).on("click", function () {
    150                     $.pickviewselect.setLastPickElement(this);
    151                     var config = $.data(this, 'pickviewselect');
    152                     $.zProtocol({
    153                         type: "Control.PickerViewSelect",
    154                         path: "/Create/BodyBottom",
    155                         data: { text: config.title, textColor: config.textColor, fontSize: config.fontSize, datasource: config.datasource, menus: config.menus, initialData: config.selectIndex }
    156                     });
    157                 });
    158             }
    159         });
    160 
    161         function initPickSelect(target, config) {
    162 
    163         }
    164     }
    165 
    166     $.extend({
    167         pickviewcity: {
    168             defaults: {
    169                 lastPickElement: undefined,
    170                 config: {
    171                     title: "请选择",
    172                     textColor: "000000",
    173                     fontSize: 14,
    174                     menus: [
    175                        {
    176                            text: "确定",
    177                            textColor: "000000",
    178                            backColor: "FFFFFF",
    179                            fontSize: "12",
    180                            jsCallBack: "$.pickviewcity.changeValue('#pickview#')"
    181                        },
    182                         {
    183                             text: "取消",
    184                             textColor: "000000",
    185                             backColor: "FFFFFF",
    186                             fontSize: "12"
    187                         }
    188                     ]
    189                 }
    190             },
    191             getLastPickElement: function () {
    192                 return this.defaults.lastPickElement;
    193             },
    194             setLastPickElement: function (element) {
    195                 this.defaults.lastPickElement = element;
    196             },
    197             changeValue: function (addressObj) {
    198                 addressObj = eval("(" + addressObj + ")");
    199                 var lastPickElement = this.getLastPickElement();
    200                 var state = $.data(lastPickElement, "pickviewcity");
    201                 state.province = { name: addressObj.provinceName, code: addressObj.provinceCode };
    202                 state.city = { name: addressObj.cityName, code: addressObj.cityCode };
    203                 state.area = { name: addressObj.districtName, code: addressObj.districtCode };
    204                 $(lastPickElement).find("input:eq(0)").val(state.province.name + state.city.name + state.area.name);
    205                 $(lastPickElement).find("input.pv_province").val(state.province.code);
    206                 $(lastPickElement).find("input.pv_city").val(state.city.code);
    207                 $(lastPickElement).find("input.pv_area").val(state.area.code);
    208             }
    209         },
    210         pickviewdate: {
    211             defaults: {
    212                 lastPickElement: undefined,
    213                 config: {
    214                     title: "请选择",
    215                     textColor: "000000",
    216                     fontSize: 16,
    217                     isShowWeek: false,
    218                     menus: [
    219                        {
    220                            text: "确定",
    221                            textColor: "000000",
    222                            backColor: "FFFFFF",
    223                            fontSize: "12",
    224                            jsCallBack: "$.pickviewdate.changeValue('#pickview#')"
    225                        },
    226                         {
    227                             text: "取消",
    228                             textColor: "000000",
    229                             backColor: "FFFFFF",
    230                             fontSize: "12"
    231                         }
    232                     ]
    233                 }
    234             },
    235             getLastPickElement: function () {
    236                 return this.defaults.lastPickElement;
    237             },
    238             setLastPickElement: function (element) {
    239                 this.defaults.lastPickElement = element;
    240             },
    241             changeValue: function (dateObj) {
    242                 //alert(JSON.stringify(dateObj));
    243                 dateObj = eval("(" + dateObj + ")");
    244                 var lastPickElement = this.getLastPickElement();
    245                 var state = $.data(lastPickElement, "pickviewdate");
    246                 state.date = dateObj;
    247                 state.value = state.date.year + "-" + state.date.month + "-" + state.date.day;
    248                 $(lastPickElement).find("input:eq(1)").val(state.value);
    249                 if (state.isShowWeek) {
    250                     var weekDay = ['', '', '', '', '', '', ''];
    251                     $(lastPickElement).find("input:eq(0)").val(state.value + ' 星期' + weekDay[dateObj.weekday]);
    252                 }
    253                 else {
    254                     $(lastPickElement).find("input:eq(0)").val(state.value);
    255                 }
    256 
    257             }
    258         },
    259         pickviewselect: {
    260             defaults: {
    261                 lastPickElement: undefined,
    262                 config: {
    263                     title: "请选择",
    264                     textColor: "000000",
    265                     fontSize: 18,
    266                     menus: [
    267                        {
    268                            text: "确定",
    269                            textColor: "000000",
    270                            backColor: "FFFFFF",
    271                            fontSize: "12",
    272                            jsCallBack: "$.pickviewselect.changeValue('#pickview#')"
    273                        },
    274                         {
    275                             text: "取消",
    276                             textColor: "000000",
    277                             backColor: "FFFFFF",
    278                             fontSize: "12"
    279                         }
    280                     ]
    281                 }
    282             },
    283             getLastPickElement: function () {
    284                 return this.defaults.lastPickElement;
    285             },
    286             setLastPickElement: function (element) {
    287                 this.defaults.lastPickElement = element;
    288             },
    289             changeValue: function (selectObj) {
    290                 if (typeof (selectObj) == "string") {
    291                     selectObj = eval("(" + selectObj + ")");
    292                 }
    293                 var lastPickElement = this.getLastPickElement();
    294                 var oldValue = $(lastPickElement).find("input:eq(1)").val();
    295                 $(lastPickElement).find("input:eq(0)").val(selectObj.text);
    296                 $(lastPickElement).find("input:eq(1)").val(selectObj.value);
    297                 var state = $.data(lastPickElement, "pickviewselect");
    298                 var selectIndex = 0;
    299                 for (var i in state.datasource) {
    300                     if (state.datasource[i].value == selectObj.value) {
    301                         selectIndex = i;
    302                         break;
    303                     }
    304                 }
    305                 state.selectIndex = selectIndex;
    306                 //如果定义有值改变事件,则调用值改变的回调
    307                 if (oldValue != selectObj.value && state.changeValue) {
    308                     state.changeValue(selectObj.value, selectObj.text, oldValue);
    309                 }
    310             }
    311         }
    312     });
    313 
    314     $.fn.inputbox = function (options, params) {
    315         if (typeof (options) == "string") {
    316             $.inputbox.methods[options](this, params);
    317         }
    318         return this.each(function () {
    319             var state = $.data(this, 'inputbox');
    320             if (state) {
    321                 $.extend(state, options);
    322             } else {
    323                 $(this).on("click", function () {
    324                     var inputType = $(this).prop("type");
    325                     if (!inputType || inputType == "text") {
    326                         inputType = "defaults";
    327                     } else {
    328                         if (inputType == "tel") {
    329                             inputType = "phone";
    330                         }
    331                     }
    332                     var placeholder = $(this).prop("placeholder");
    333                     if (!placeholder) {
    334                         placeholder = ""
    335                     }
    336 
    337                     var setting = {
    338                         keyboardtype: inputType,
    339                         placeholder: placeholder,
    340                         text: $(this).val(),
    341                     };
    342 
    343                     var eleSetting = $(this).attr("data-options");
    344                     if (eleSetting) {
    345                         eleSetting = eval("(" + eleSetting + ")");
    346                     }
    347 
    348                     setting = $.extend({}, $.inputbox.defaults.config, setting, eleSetting);
    349                     if (setting.regex) {
    350                         setting.regex = $.toBase64Str(setting.regex);
    351                     }
    352                     var eleProp = $(this).attr("data-options")
    353                     $.inputbox.setLastInputElement(this);
    354                     $.zProtocol({
    355                         type: "Control.InputBox",
    356                         path: "/Create/BodyBottom",
    357                         data: setting
    358                     });
    359                 });
    360             }
    361         });
    362     };
    363     $.extend({
    364         inputbox: {
    365             defaults: {
    366                 lastInputEle: undefined,
    367                 config: {
    368                     text: "",
    369                     placeholder: "",
    370                     buttonBackGroundColor: "000000",
    371                     buttonFontSize: "18",
    372                     buttonText: "确定",
    373                     keyboardtype: "default",
    374                     jscallback: "$.inputbox.changeValue('#inputbox#')"
    375                 },
    376             },
    377             getLastInputElement: function () {
    378                 return this.defaults.lastInputEle;
    379             },
    380             setLastInputElement: function (element) {
    381                 this.defaults.lastInputEle = element;
    382             },
    383             changeValue: function (selectObj) {
    384                 var lastInputElement = this.getLastInputElement();
    385                 $(lastInputElement).val(selectObj);
    386             }
    387         }
    388     });
    389 });
    View Code

    给input加上相应的class(

    js_inputbox           input输入框
    js_pickviewselect   下拉单项选择
    js_pickviewdate    下拉选择时间
    js_pickviewcity      下拉选择地址

    //input输入框:          
    <div class="js_inputbox">汉字:<input name="hanz" type="text" data-tipName="汉字" data-valid='{required:true,CHS:true,maxLength:4}'/></div> 
    
    //js_pickviewselect 下拉单项选择:               data-options="{title:'下拉的标题',changeValue:自定义事件(左右默认取消确定),datasource:@ViewBag.数据源 后台给的 用来将数据存到隐藏域}"
    <div class="js_pickviewselect">选择:<input name="xz" type="text" data-tipName="选择" data-valid='{required:true,CHS:true,maxLength:4}'/></div>
    <input type="hidden" name="dsd" data-valid='{required:true,CHS:true} data-options="{title:'装修',changeValue:自定义事件(左右默认取消,确定),datasource:@ViewBag.后台给的数据源 }' />
    
    // js_pickviewdate 下拉选择时间:
    <div class="js_pickviewdate ">选择:<input name="xzsj" type="text" data-tipName="选择时间" data-valid='{required:true,CHS:true,maxLength:4}'/></div>
    
    //js_pickviewcity 下拉选择地址 {pv_province省   pv_city市  pv_area区  放在隐藏域的class }
    <p class="f_pr text js_pickviewcity">
    <input type="text" placeholder="选择省份地区" name="LocationArea" value="@(string.Format("{0}{1}{2}",Model.ProvinceName,Model.CityName,Model.AreaName))" readonly="readonly"/>
    @Html.HiddenFor(model => model.ProvinceCode, new { @class = "pv_province", @data_tipName = "省份地区", @data_valid = "{selectRequired:true}" })
    @Html.HiddenFor(model => model.CityCode, new { @class = "pv_city", @data_tipName = "省份地区", @data_valid = "{selectRequired:true}" })
    @Html.HiddenFor(model => model.AreaCode, new { @class = "pv_area" , @data_tipName = "省份地区", @data_valid = "{selectRequired:true}" })
    </p>
    
  • 相关阅读:
    学习制作iOS程序第八天:首页之本地缓存(26)
    学习制作iOS程序第五天:首页之推荐二手房(18)
    Webpack探索【15】--- 基础构建原理详解(模块如何被组建&如何加载)&源码解读
    计算税收在线工具
    XSS详解【3】---防御防御思路和防御方法
    XSS详解【2】---主要危害及其原理
    XSS详解【1】---基本概念和攻击原理
    11111111--临时保存
    Webpack探索【14】--- Typescript构建详解
    Webpack探索【13】--- Shimming详解
  • 原文地址:https://www.cnblogs.com/yinhuaboke/p/6757150.html
Copyright © 2020-2023  润新知