记录一下

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

给input加上相应的class(

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

  1. //input输入框:          
  2. <div class="js_inputbox">汉字:<input name="hanz" type="text" data-tipName="汉字" data-valid='{required:true,CHS:true,maxLength:4}'/></div>
  3.  
  4. //js_pickviewselect 下拉单项选择: data-options="{title:'下拉的标题',changeValue:自定义事件(左右默认取消确定),datasource:@ViewBag.数据源 后台给的 用来将数据存到隐藏域}"
  5. <div class="js_pickviewselect">选择:<input name="xz" type="text" data-tipName="选择" data-valid='{required:true,CHS:true,maxLength:4}'/></div>
  6. <input type="hidden" name="dsd" data-valid='{required:true,CHS:true} data-options="{title:'装修',changeValue:自定义事件(左右默认取消,确定),datasource:@ViewBag.后台给的数据源 }' />
  7.  
  8. // js_pickviewdate 下拉选择时间:
  9. <div class="js_pickviewdate ">选择:<input name="xzsj" type="text" data-tipName="选择时间" data-valid='{required:true,CHS:true,maxLength:4}'/></div>
  10.  
  11. //js_pickviewcity 下拉选择地址 {pv_province省 pv_city市 pv_area区 放在隐藏域的class }
  12. <p class="f_pr text js_pickviewcity">
  13. <input type="text" placeholder="选择省份地区" name="LocationArea" value="@(string.Format("{0}{1}{2}",Model.ProvinceName,Model.CityName,Model.AreaName))" readonly="readonly"/>
  14. @Html.HiddenFor(model => model.ProvinceCode, new { @class = "pv_province", @data_tipName = "省份地区", @data_valid = "{selectRequired:true}" })
  15. @Html.HiddenFor(model => model.CityCode, new { @class = "pv_city", @data_tipName = "省份地区", @data_valid = "{selectRequired:true}" })
  16. @Html.HiddenFor(model => model.AreaCode, new { @class = "pv_area" , @data_tipName = "省份地区", @data_valid = "{selectRequired:true}" })
  17. </p>

选择控件js插件和使用方法的更多相关文章

  1. [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)

    前言 在 [Ext JS 4] 实战之 带week(星期)的日期选择控件(二) 的最后,有提到一个解决方案. 不过这方案有一个条件  ==> “2. 每年的周数从(1-52), 如果超过52 周 ...

  2. 【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

    原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件——测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装 ...

  3. js组件开发-移动端地区选择控件mobile-select-area

    移动端地区选择控件mobile-select-area 由于之前的[js开源组件开发]js手机联动选择地区仿ios 开源git 很受欢迎,于是我又对其进行了一些优化,包括可选的范围变大了,添加了默认空 ...

  4. js进阶 9-10 html控件如何实现点击自动选择控件内容

    js进阶 9-10  html控件如何实现点击自动选择控件内容 一.总结 一句话总结: 1.在click事件中,如果focus,那就select 2.blur 1.html中控件添加两种方式? 在表单 ...

  5. js 跨域的问题 (同一个主域名不同的二级域名下的跨域问题) 解决 WdatePicker.js my97日期选择控件

    例如域名是  a.xx.com  和 b.xx.com    如果一个页面中引入多个iframe,要想能够操作所有iframe,必须都得设置相同domain. 如果iframe的时候  a包含b  为 ...

  6. ASP.NET(c#) 日期选择控件的另一种实现方法

    这篇文章是在一个英文网站发现的,完全使用ASP.NET实现了日期选择的基本功能,没有使用js,原文链接http://geekswithblogs.net/plundberg/archive/2009/ ...

  7. 【高德地图API】从零開始学高德JS API(二)地图控件与插件——測距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

    不管是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发人员使用.降低开发人员工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,相似谷歌 ...

  8. asp.net mvc中使用jquery H5省市县三级地区选择控件

    地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp. ...

  9. jquery mobiscroll移动端日期选择控件(无乱码)

    jquery mobiscroll移动端日期选择控件(无乱码) <pre><!DOCTYPE html><html lang="en">< ...

随机推荐

  1. BZOJ4278 [ONTAK2015]Tasowanie[后缀数组+贪心]

    题目 求两数组归并后的数组最小字典序排列. 嘛,可能本人在贪心这块还是太弱了(或者说什么都弱),如果不知道是字符串题估计也想不起来用sa. 显然看得出归并时字典序小的那个数组先往里面加,这就是要比较两 ...

  2. AI-Info-Micron-Insight:将您的游戏技能变成一份工作

    ylbtech-AI-Info-Micron-Insight:将您的游戏技能变成一份工作 1.返回顶部 1. 将您的游戏技能变成一份工作 听起来不现实? 一位来自著名商学院的教授不这么认为.他认为,金 ...

  3. Spring boot 学习八 Springboot的filter

    一:  传统的javaEE增加Filter是在web.xml中配置,如以下代码: <filter> <filter-name>TestFilter</filter-nam ...

  4. 三层架构与MVC比较:

    三层架构与MVC比较: 1.两者不是同一概念 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. MVC是一个设计模式,它是根据项目的具体需求来决定是否适用于该项目. 那么架构跟设计模式 ...

  5. 文件解析库doctotext安装和使用

    安装doctotext 1 安装GCC到4.6以上 tar jxf gcc-4.7.0.tar.bz2 cd gcc-4.7.0 编译 ./contrib/download_prerequisites ...

  6. pythonDB api的学习

    有时候需要操作数据库,为了能使用统一的接口访问,我们采用Python DB API,地址为 https://www.python.org/dev/peps/pep-0249/ 全文参考---“疯狂的蚂 ...

  7. 利用oracle session context 向oracle传值

    有时候,我们在执行数据库请求时,需要向数据库传一些应用程序的上下文信息,比如当前应用的用户.举个场景,我们要通过触发器记录对某些关键表的修改日志,日志包括修改的表,字段,字段的值,修改的时间,当然非常 ...

  8. 模拟一则ORA-600 [4194][][]故障并处理

    环境:OEL 5.7 + Oracle 11.2.0.3 1.模拟ORA-600 [4194][][]故障 2.使用bbed处理 3.尝试启动数据库 1.模拟ORA-600 [4194][][]故障 ...

  9. js上传文件到后台时序列化数据

    let fd = new FormData() // 定义传递的序列化对象,for (let i = 0; i < addArr.length; i++) { // addArr是选中文件的输入 ...

  10. GO:字符串Slice后乱码问题

    遇到的问题:用Slice 直接截取字符串的时候会出现乱码现象 package main import ( "fmt" ) func main() { str := "我的 ...