选择控件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">< ...
随机推荐
- 「P4994」「洛谷11月月赛」 终于结束的起点(枚举
题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...
- poj3013Big Chrismas Tree——树转换spfa
题目:http://poj.org/problem?id=3013 看似生成树,实则最短路,可以将题意转化为点权*根到此点的边权和(最短路使其最小). 代码如下: #include<iostre ...
- 用Entity Framework 来创建MySql数据库和表结构
1. 创建VS工程 2.添加新项, 选中ADO.Net Entity Data Model模板 3.填入Host及数据库名字, 如果没有此数据库, 会提示创建 4.添加edmx后, 右击选择属性,配置 ...
- DefaultTableCellRenderer 自定义
方式一: DefaultTableCellRenderer render = new DefaultTableCellRenderer(); render.setHorizontalAlignment ...
- SLAM细碎内容积累_来自各种技术交流群_持续更新
imu标定 工具包:imu_utils, imu_tk, kalibr 用kalibr做标定,相机和imu的采样频率要求:相机20,imu100.kalibr也可以做鱼眼相机+imu的联合标定 ...
- 快速部署Kubernetes集群管理
这篇文章介绍了如何快速部署一套Kubernetes集群,下面就快速开始吧! 准备工作 //关闭防火墙 systemctl stop firewalld.service systemctl disabl ...
- Deep Learning - Install the Development Environment
WLS(Windows Subsystem for Linux) Base WLS Installation Guide Initializing a newly installed distro W ...
- 在SQL中直接把查询结果转换为JSON数据
下面这篇中,已经有准备一些数据: <MS SQL server对象类型type>https://www.cnblogs.com/insus/p/10903916.html 为前端服务,直接 ...
- 利用memoize缓存到Redis出现多个参数同一个结果
在为后端输出加入Redis缓存的过程中出现的问题. 在我利用Flask-restful架构的后端中,理所当然的利用装饰器marshal_with对我的返回数据进行格式化输出. 举个最简单的例子: fr ...
- SQL中的limit
SELECT * FROM employees ORDER BY hire_date DESC LIMIT 2,1; LIMIT m,n : 表示从第m+1条开始,取n条数据: LIMIT n : 表 ...