选择控件js插件和使用方法
记录一下
选择控件js插件
/*
* 滚动控件,包含地址选择、时间选择、自定义单选
*/
//js_inputbox input 输入框
//js_pickviewselect 下拉单项选择
//js_pickviewdate 下拉选择时间
//js_pickviewcity 下拉选择地址
//data-options="{title:'下拉的标题',changeValue:自定义事件(左右默认取消确定),datasource:@ViewBag.数据源 后台给的 数据存到隐藏域}" $(function () { $(document).ready(function () {
$(".js_pickviewdate").pickviewdate();
$(".js_pickviewselect").pickviewselect();
$(".js_pickviewcity").pickviewcity();
$("input.js_inputbox,textarea.js_inputbox").inputbox();
}); $.fn.pickviewcity = function (options, params) {
if (typeof (options) == "string") {
$.pickview.methods[options](this, params);
}
return this.each(function () {
var state = $.data(this, 'pickviewcity');
if (state) {
$.extend(state, options);
} else {
var eleSetting = $(this).attr("data-options");
if (!eleSetting) {
eleSetting = { text: "请选择地址" };
} else {
eleSetting = eval("(" + eleSetting + ")");
}
state = $.extend({}, $.pickviewcity.defaults.config, eleSetting, options);
state.province = { code: $(this).find("input.pv_province").val() };
state.city = { code: $(this).find("input.pv_city").val() };
state.area = { code: $(this).find("input.pv_area").val() };
$.data(this, 'pickviewcity', state); $(this).on("click", function () {
$.pickviewcity.setLastPickElement(this);
var initData = [];
if (state.province) {
initData.push(state.province.code);
}
if (state.city) {
initData.push(state.city.code);
}
if (state.area) {
initData.push(state.area.code);
}
if (initData.length <= ) {
initData = ["", "", ""];
}
$.zProtocol({
type: "Control.PickerViewCity",
path: "/Create/BodyBottom",
data: { text: state.text, textColor: state.textColor, fontSize: state.fontSize, menus: state.menus, initialData: initData.join(",") }
});
});
}
});
} $.fn.pickviewdate = function (options, params) {
if (typeof (options) == "string") {
$.pickview.methods[options](this, params);
}
return this.each(function () {
var state = $.data(this, 'pickviewdate');
if (state) {
$.extend(state, options);
} else {
var eleSetting = $(this).attr("data-options");
if (!eleSetting) {
return;
}
eleSetting = eval("(" + eleSetting + ")");
state = $.extend({}, $.pickviewdate.defaults.config, eleSetting, options);
state.value = $(this).find("input:eq(1)").val();
$.data(this, 'pickviewdate', state);
if (!state.date) {
state.value = $(this).find("input:eq(1)").val();
//未设置或为9999 0001,则设置为当前时间,防止App不响应 by 雷 2017-3-7
if (!state.value || state.value.indexOf("") == || state.value.indexOf("") == ) {
var now = new Date();
state.value = now.getFullYear() + "-" + (now.getMonth() + ) + "-" + now.getDate();
}
state.value = state.value.replace(/\//g, '-');
var reg = new RegExp("([0-9]+-[0-9]+-[0-9]+)", "gmi");
var resultArray = reg.exec(state.value);
if (resultArray != null) {
state.value = resultArray[]; //截取日期 2017-3-8 0:00:00 截为2017-3-8
}
} $(this).on("click", function () {
$.pickviewdate.setLastPickElement(this);
$.zProtocol({
type: "Control.PickerViewDate",
path: "/Create/BodyBottom",
data: { text: state.title, textColor: state.textColor, fontSize: state.fontSize, menus: state.menus, initialData: state.value }
});
});
}
});
} $.fn.pickviewselect = function (options, params) {
if (typeof (options) == "string") {
$.pickview.methods[options](this, params);
}
return this.each(function () {
var state = $.data(this, 'pickviewselect');
if (state) {
$.extend(state, options);
} else {
var eleSetting = $(this).attr("data-options");
if (!eleSetting) {
return;
}
eleSetting = eval("(" + eleSetting + ")");
var saveState = $.extend({}, $.pickviewselect.defaults.config, eleSetting, options);
$.data(this, 'pickviewselect', saveState);
var initValue = $(this).find("input:eq(1)").val(); var initIndex = ;
if (initValue) {
for (var dIndex in saveState.datasource) {
if (initValue == saveState.datasource[dIndex].value) {
$(this).find("input:eq(0)").val(saveState.datasource[dIndex].text);
initIndex = dIndex;
break;
}
}
}
saveState.selectIndex = initIndex; if (saveState.value) {
for (var dIndex in saveState.datasource) {
if (saveState.value == saveState.datasource[dIndex].value) {
$(this).find("input:eq(0)").val(saveState.datasource[dIndex].text);
break;
}
}
} $(this).on("click", function () {
$.pickviewselect.setLastPickElement(this);
var config = $.data(this, 'pickviewselect');
$.zProtocol({
type: "Control.PickerViewSelect",
path: "/Create/BodyBottom",
data: { text: config.title, textColor: config.textColor, fontSize: config.fontSize, datasource: config.datasource, menus: config.menus, initialData: config.selectIndex }
});
});
}
}); function initPickSelect(target, config) { }
} $.extend({
pickviewcity: {
defaults: {
lastPickElement: undefined,
config: {
title: "请选择",
textColor: "",
fontSize: ,
menus: [
{
text: "确定",
textColor: "",
backColor: "FFFFFF",
fontSize: "",
jsCallBack: "$.pickviewcity.changeValue('#pickview#')"
},
{
text: "取消",
textColor: "",
backColor: "FFFFFF",
fontSize: ""
}
]
}
},
getLastPickElement: function () {
return this.defaults.lastPickElement;
},
setLastPickElement: function (element) {
this.defaults.lastPickElement = element;
},
changeValue: function (addressObj) {
addressObj = eval("(" + addressObj + ")");
var lastPickElement = this.getLastPickElement();
var state = $.data(lastPickElement, "pickviewcity");
state.province = { name: addressObj.provinceName, code: addressObj.provinceCode };
state.city = { name: addressObj.cityName, code: addressObj.cityCode };
state.area = { name: addressObj.districtName, code: addressObj.districtCode };
$(lastPickElement).find("input:eq(0)").val(state.province.name + state.city.name + state.area.name);
$(lastPickElement).find("input.pv_province").val(state.province.code);
$(lastPickElement).find("input.pv_city").val(state.city.code);
$(lastPickElement).find("input.pv_area").val(state.area.code);
}
},
pickviewdate: {
defaults: {
lastPickElement: undefined,
config: {
title: "请选择",
textColor: "",
fontSize: ,
isShowWeek: false,
menus: [
{
text: "确定",
textColor: "",
backColor: "FFFFFF",
fontSize: "",
jsCallBack: "$.pickviewdate.changeValue('#pickview#')"
},
{
text: "取消",
textColor: "",
backColor: "FFFFFF",
fontSize: ""
}
]
}
},
getLastPickElement: function () {
return this.defaults.lastPickElement;
},
setLastPickElement: function (element) {
this.defaults.lastPickElement = element;
},
changeValue: function (dateObj) {
//alert(JSON.stringify(dateObj));
dateObj = eval("(" + dateObj + ")");
var lastPickElement = this.getLastPickElement();
var state = $.data(lastPickElement, "pickviewdate");
state.date = dateObj;
state.value = state.date.year + "-" + state.date.month + "-" + state.date.day;
$(lastPickElement).find("input:eq(1)").val(state.value);
if (state.isShowWeek) {
var weekDay = ['日', '一', '二', '三', '四', '五', '六'];
$(lastPickElement).find("input:eq(0)").val(state.value + ' 星期' + weekDay[dateObj.weekday]);
}
else {
$(lastPickElement).find("input:eq(0)").val(state.value);
} }
},
pickviewselect: {
defaults: {
lastPickElement: undefined,
config: {
title: "请选择",
textColor: "",
fontSize: ,
menus: [
{
text: "确定",
textColor: "",
backColor: "FFFFFF",
fontSize: "",
jsCallBack: "$.pickviewselect.changeValue('#pickview#')"
},
{
text: "取消",
textColor: "",
backColor: "FFFFFF",
fontSize: ""
}
]
}
},
getLastPickElement: function () {
return this.defaults.lastPickElement;
},
setLastPickElement: function (element) {
this.defaults.lastPickElement = element;
},
changeValue: function (selectObj) {
if (typeof (selectObj) == "string") {
selectObj = eval("(" + selectObj + ")");
}
var lastPickElement = this.getLastPickElement();
var oldValue = $(lastPickElement).find("input:eq(1)").val();
$(lastPickElement).find("input:eq(0)").val(selectObj.text);
$(lastPickElement).find("input:eq(1)").val(selectObj.value);
var state = $.data(lastPickElement, "pickviewselect");
var selectIndex = ;
for (var i in state.datasource) {
if (state.datasource[i].value == selectObj.value) {
selectIndex = i;
break;
}
}
state.selectIndex = selectIndex;
//如果定义有值改变事件,则调用值改变的回调
if (oldValue != selectObj.value && state.changeValue) {
state.changeValue(selectObj.value, selectObj.text, oldValue);
}
}
}
}); $.fn.inputbox = function (options, params) {
if (typeof (options) == "string") {
$.inputbox.methods[options](this, params);
}
return this.each(function () {
var state = $.data(this, 'inputbox');
if (state) {
$.extend(state, options);
} else {
$(this).on("click", function () {
var inputType = $(this).prop("type");
if (!inputType || inputType == "text") {
inputType = "defaults";
} else {
if (inputType == "tel") {
inputType = "phone";
}
}
var placeholder = $(this).prop("placeholder");
if (!placeholder) {
placeholder = ""
} var setting = {
keyboardtype: inputType,
placeholder: placeholder,
text: $(this).val(),
}; var eleSetting = $(this).attr("data-options");
if (eleSetting) {
eleSetting = eval("(" + eleSetting + ")");
} setting = $.extend({}, $.inputbox.defaults.config, setting, eleSetting);
if (setting.regex) {
setting.regex = $.toBase64Str(setting.regex);
}
var eleProp = $(this).attr("data-options")
$.inputbox.setLastInputElement(this);
$.zProtocol({
type: "Control.InputBox",
path: "/Create/BodyBottom",
data: setting
});
});
}
});
};
$.extend({
inputbox: {
defaults: {
lastInputEle: undefined,
config: {
text: "",
placeholder: "",
buttonBackGroundColor: "",
buttonFontSize: "",
buttonText: "确定",
keyboardtype: "default",
jscallback: "$.inputbox.changeValue('#inputbox#')"
},
},
getLastInputElement: function () {
return this.defaults.lastInputEle;
},
setLastInputElement: function (element) {
this.defaults.lastInputEle = element;
},
changeValue: function (selectObj) {
var lastInputElement = this.getLastInputElement();
$(lastInputElement).val(selectObj);
}
}
});
});
给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>
选择控件js插件和使用方法的更多相关文章
- [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)
前言 在 [Ext JS 4] 实战之 带week(星期)的日期选择控件(二) 的最后,有提到一个解决方案. 不过这方案有一个条件 ==> “2. 每年的周数从(1-52), 如果超过52 周 ...
- 【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨
原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件——测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装 ...
- js组件开发-移动端地区选择控件mobile-select-area
移动端地区选择控件mobile-select-area 由于之前的[js开源组件开发]js手机联动选择地区仿ios 开源git 很受欢迎,于是我又对其进行了一些优化,包括可选的范围变大了,添加了默认空 ...
- js进阶 9-10 html控件如何实现点击自动选择控件内容
js进阶 9-10 html控件如何实现点击自动选择控件内容 一.总结 一句话总结: 1.在click事件中,如果focus,那就select 2.blur 1.html中控件添加两种方式? 在表单 ...
- js 跨域的问题 (同一个主域名不同的二级域名下的跨域问题) 解决 WdatePicker.js my97日期选择控件
例如域名是 a.xx.com 和 b.xx.com 如果一个页面中引入多个iframe,要想能够操作所有iframe,必须都得设置相同domain. 如果iframe的时候 a包含b 为 ...
- ASP.NET(c#) 日期选择控件的另一种实现方法
这篇文章是在一个英文网站发现的,完全使用ASP.NET实现了日期选择的基本功能,没有使用js,原文链接http://geekswithblogs.net/plundberg/archive/2009/ ...
- 【高德地图API】从零開始学高德JS API(二)地图控件与插件——測距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨
不管是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发人员使用.降低开发人员工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,相似谷歌 ...
- asp.net mvc中使用jquery H5省市县三级地区选择控件
地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp. ...
- jquery mobiscroll移动端日期选择控件(无乱码)
jquery mobiscroll移动端日期选择控件(无乱码) <pre><!DOCTYPE html><html lang="en">< ...
随机推荐
- 【Python】python2.7 安装配置OpenCV2
环境:Ubuntu16.04 anaconda Python2.7 opencv2.4.13 安装opencv后 import cv2 遇到错误信息: No module named cv2 安装op ...
- dubbo设计实现的健壮性
Dubbo 作为远程服务暴露.调用和治理的解决方案,是应用运转的经络,其本身实现健壮性的重要程度是不言而喻的. 这里列出一些 Dubbo 用到的原则和方法. 日志 日志是发现问题.查看问题一个最常用的 ...
- 记一次keepalived脑裂问题查找
在自己环境做keepalived+Redis实验时,当重启了备用redies机器后,发现两台redies主机都拿到了VIP [root@redis2 ~]# ip addr list 1: lo: & ...
- [hdu3853]LOOPS(概率dp)
题意:迷宫是一个R*C的布局,每个格子中给出停留在原地,往右走一个,往下走一格的概率,起点在(1,1),终点在(R,C),每走一格消耗两点能量,求出最后所需要的能量期望. 解题关键:概率dp反向求期望 ...
- excel批量提取网页标题
最近时间比较忙,有时候很多网页需要临时保存,以便空闲的时候查看.单纯的保存网页链接会让人很枯燥,所以需要自动批量提取标题. 为了这个小功能去写个小程序有点不划算,所以就利用excel实现了这个功能. ...
- 解决 Ajax 发送 post 请求出现 403 Forbidden 的三种方式
众所周知前端向后台发送 post 请求时,必须验证 csrf,否则会报错 403 Forbidden.使用 Django Form 表单可以直接在表单里面添加 {% csrf_token %} 即可, ...
- 快速发现并解决maven依赖传递冲突
此文已由作者翟曜授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近在测试过程中,遇到了几次maven传递依赖冲突的问题,所以记录下解决的过程,遇到类似问题供参照. 问题现象 ...
- deb包制作
制作deb包 方法一:checkinstall checkinstall的原理就是将make install的内容放到一个临时目录然后打包,只要能执行make install就能创建deb包,如果代码 ...
- [Leetcode]847. Shortest Path Visiting All Nodes(BFS|DP)
题解 题意 给出一个无向图,求遍历所有点的最小花费 分析 1.BFS,设置dis[status][k]表示遍历的点数状态为status,当前遍历到k的最小花费,一次BFS即可 2.使用DP 代码 // ...
- ue4 2游戏构架相关
官网:游戏性指南 https://docs.unrealengine.com/latest/CHN/Gameplay/index.html 深入UE4剖析源码,浅出GameEngine设计理念,比较好 ...