选择控件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">< ...
随机推荐
- BZOJ4278 [ONTAK2015]Tasowanie[后缀数组+贪心]
题目 求两数组归并后的数组最小字典序排列. 嘛,可能本人在贪心这块还是太弱了(或者说什么都弱),如果不知道是字符串题估计也想不起来用sa. 显然看得出归并时字典序小的那个数组先往里面加,这就是要比较两 ...
- AI-Info-Micron-Insight:将您的游戏技能变成一份工作
ylbtech-AI-Info-Micron-Insight:将您的游戏技能变成一份工作 1.返回顶部 1. 将您的游戏技能变成一份工作 听起来不现实? 一位来自著名商学院的教授不这么认为.他认为,金 ...
- Spring boot 学习八 Springboot的filter
一: 传统的javaEE增加Filter是在web.xml中配置,如以下代码: <filter> <filter-name>TestFilter</filter-nam ...
- 三层架构与MVC比较:
三层架构与MVC比较: 1.两者不是同一概念 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. MVC是一个设计模式,它是根据项目的具体需求来决定是否适用于该项目. 那么架构跟设计模式 ...
- 文件解析库doctotext安装和使用
安装doctotext 1 安装GCC到4.6以上 tar jxf gcc-4.7.0.tar.bz2 cd gcc-4.7.0 编译 ./contrib/download_prerequisites ...
- pythonDB api的学习
有时候需要操作数据库,为了能使用统一的接口访问,我们采用Python DB API,地址为 https://www.python.org/dev/peps/pep-0249/ 全文参考---“疯狂的蚂 ...
- 利用oracle session context 向oracle传值
有时候,我们在执行数据库请求时,需要向数据库传一些应用程序的上下文信息,比如当前应用的用户.举个场景,我们要通过触发器记录对某些关键表的修改日志,日志包括修改的表,字段,字段的值,修改的时间,当然非常 ...
- 模拟一则ORA-600 [4194][][]故障并处理
环境:OEL 5.7 + Oracle 11.2.0.3 1.模拟ORA-600 [4194][][]故障 2.使用bbed处理 3.尝试启动数据库 1.模拟ORA-600 [4194][][]故障 ...
- js上传文件到后台时序列化数据
let fd = new FormData() // 定义传递的序列化对象,for (let i = 0; i < addArr.length; i++) { // addArr是选中文件的输入 ...
- GO:字符串Slice后乱码问题
遇到的问题:用Slice 直接截取字符串的时候会出现乱码现象 package main import ( "fmt" ) func main() { str := "我的 ...