2019独角兽企业重金招聘Python工程师标准>>>

Java代码  

  1. //把ext 对象绑定在Html Form元素时的ext属性中

  2. Ext.override(Ext.Component, {

  3. initComponent :function(){

  4. this.on('render', function(){

  5. if(this.el)

  6. Ext.getDom(this.el).ext = this;

  7. if(this.hiddenField)//Combo

  8. Ext.getDom(this.hiddenField).ext = this;

  9. })

  10. }

  11. });

  12. ­

  13. //获取验证信息

  14. // 将EXT的验证属性写成JSONString格式,保护在val属性中

  15. $getValid = function(el){

  16. var valid = "{}";

  17. if(Ext.getDom(el).attributes['val'])

  18. valid = Ext.getDom(el).attributes['val'].nodeValue;

  19. return valid;

  20. }

  21. //自动绑定Html中的Form元素

  22. $blindFormField = function(){

  23. var objArray = Ext.DomQuery.select("input[type=submit]");

  24. Ext.each(objArray, function(obj) {

  25. var btn = new Ext.Button({

  26. text : obj.value,

  27. applyTo : obj,

  28. handler : obj.onclick,

  29. type : obj.type

  30. });

  31. btn.getEl().replace(Ext.get(obj));

  32. });

  33. var objArray = Ext.DomQuery.select("input[type=reset]");

  34. Ext.each(objArray, function(obj) {

  35. var btn = new Ext.Button({

  36. text : obj.value,

  37. applyTo : obj,

  38. handler : obj.onclick,

  39. type : obj.type

  40. });

  41. btn.getEl().replace(Ext.get(obj));

  42. });

  43. var objArray = Ext.DomQuery.select("input[type=button]");

  44. Ext.each(objArray, function(obj) {

  45. var btn = new Ext.Button({

  46. text : obj.value,

  47. applyTo : obj,

  48. handler : obj.onclick,

  49. type : obj.type

  50. });

  51. btn.getEl().replace(Ext.get(obj));

  52. });

  53. /**

  54. * text and textarea and password and file

  55. */

  56. var objArray = Ext.DomQuery.select("input[type=text]");

  57. Ext.each(objArray, function(obj) {

  58. if(Ext.getDom(obj).ext) return;

  59. var txtField = new Ext.form.TextField(

  60. Ext.apply({applyTo:obj},eval('('+$getValid(obj)+')'))

  61. );

  62. });

  63. var objArray = Ext.DomQuery.select("input[type=password]");

  64. Ext.each(objArray, function(obj) {

  65. var txtField = new Ext.form.CustomTextField(

  66. Ext.apply({applyTo:obj,inputType:'password'},eval('('+$getValid(obj)+')'))

  67. )

  68. });

  69. var objArray = Ext.DomQuery.select("input[type=file]");

  70. Ext.each(objArray, function(obj) {

  71. });

  72. var objArray = Ext.DomQuery.select("textarea");

  73. Ext.each(objArray, function(obj) {

  74. var txtArea = new Ext.form.TextArea(

  75. Ext.apply({applyTo:obj},eval('('+$getValid(obj)+')'))

  76. );

  77. });

  78. /**

  79. * checkbox and radio

  80. */

  81. var objArray = Ext.DomQuery.select("input[type=checkbox]");

  82. Ext.each(objArray, function(obj) {

  83. var checkbox = new Ext.form.Checkbox(

  84. Ext.apply({applyTo:obj},eval('('+$getValid(obj)+')'))

  85. );

  86. });

  87. var objArray = Ext.DomQuery.select("input[type=radio]");

  88. Ext.each(objArray, function(obj) {

  89. var radio = new Ext.form.Radio(

  90. Ext.apply({applyTo:obj},eval('('+$getValid(obj)+')'))

  91. );

  92. });

  93. /**

  94. * select or comboBox

  95. */

  96. var objArray = Ext.DomQuery.select("select");

  97. Ext.each(objArray, function(obj, index) {

  98. var select = new Ext.form.ComboBox(

  99. Ext.apply({transform:obj,triggerAction:'all', forceSelection : true, cls:obj.className},eval('('+$getValid(obj)+')'))

  100. );

  101. });

  102. /**

  103. * number

  104. */

  105. var objArray = Ext.DomQuery.select("input[type=number]");

  106. Ext.each(objArray, function(obj) {

  107. var dateField = new Ext.form.CustomNumberField(

  108. Ext.apply({applyTo:obj},eval('('+$getValid(obj)+')'))

  109. );

  110. });

  111. /**

  112. * 日期类型

  113. */

  114. var objArray = Ext.DomQuery.select("input[type=date]");

  115. Ext.each(objArray, function(obj) {

  116. var dateField = new Ext.form.CustomDateField(

  117. Ext.apply({applyTo:obj,format:'Y-m-d',cls:obj.className},eval('('+$getValid(obj)+')'))

  118. );

  119. });

  120. /**

  121. * email类型

  122. */

  123. var objArray = Ext.DomQuery.select("input[type=email]");

  124. Ext.each(objArray, function(obj) {

  125. var emailField = new Ext.form.TextField(

  126. Ext.apply({applyTo:obj,vtype:'email'},eval('('+$getValid(obj)+')'))

  127. );

  128. });

  129. /**

  130. * 自定义类型

  131. */

  132. var objArray = Ext.DomQuery.select("input[type=custom]");

  133. Ext.each(objArray, function(obj) {

  134. var m_width =  $(obj).width()+7;

  135. var houseinfoField =  new Ext.form.HouseInfoArea(

  136. Ext.apply({applyTo:obj,cls:obj.className},eval('('+obj.val+')'))

  137. )

  138. });

  139. }

  140. //验证输入的合法性

  141. $validEl = function(el){

  142. if(typeof(el) == "string") el = document.getElementById(el);

  143. if(el.ext)

  144. return el.ext.validate();

  145. return true;

  146. }

  147. //验证form下所有元素输入的合法性,返回true为合法,false为不合法

  148. $valid2form = function(form){

  149. var valid = true;

  150. var thefrm = form;

  151. if(typeof(form) == "string") var thefrm = document.getElementById(form);

  152. for (i = 0; i < thefrm.elements.length; i++){

  153. var e = thefrm.elements[i];

  154. if(!e.name) continue;

  155. if(!$validEl(e)){

  156. valid = false;

  157. }

  158. }

  159. return valid;

  160. }

  161. Ext.onReady(function() {

  162. setTimeout($blindFormField, 0);

  163. })

  164. //HTML 中的使用代码

  165. <form id='myform' action='action.do' οnsubmit=''

  166. <table>

  167. <tr>

  168. <td> 字符串:</td> <td><input type='text' id='string' name='string' val='{allowBlank:false}'/></td>

  169. <td> 数字类型:</td> <td><input type='number' id='number' name='number' val='{allowBlank:false}'/></td>

  170. </tr>

  171. <tr>

  172. <td> Email:</td> <td><input type='email' id='email' name='email' val='{allowBlank:false}'/></td>

  173. <td> 日期类型:</td> <td><input type='date' id='date' name='date' val='{allowBlank:false}'/></td>

  174. </tr>

  175. <tr>

  176. <td> Select:</td>

  177. <td>

  178. <select name='select'>

  179. <option value=1>option1</option>

  180. <option value=2>option2</option>

  181. <option value=3>option3</option>

  182. </select>

  183. </td>

  184. <td> 自定义类型:</td> <td><input type='custom' id='custom' name='custom' val='{allowBlank:false}'/></td>

  185. </tr>

  186. <table>

  187. </form>

­

如果在页面中存在有两个name一样的情况下,以上代码在IE上执行后,第二个name将无法的元素将不被绑定,原因是在IE下面有个bug,如果某个节点的name跟你要取得节点的名字一样,这样会得到name=youid的那个节点
<input type='text' id='username_id' name='username'/>
<input type='text' id='username' name='username_temp'/>
这样执行alert(document.getElementById('username').id)的结果是username_id而不是username
解决这个BUG的方法一般情况有两种:­
方法一:尽量避免在页面中出现name与id属性相同的对象
方法二:利用JavaScript的特点,重写document.getElementById

Java代码  

  1. //IE_BUG_PATCH.js

  2. if (/msie/i.test(navigator.userAgent)){ //根据userAgent确定用户使用IE浏览器

  3. document.nativeGetElementById = document.getElementById;

  4. document.getElementById = function(id){

  5. var elem = document.nativeGetElementById(id);

  6. if(elem){

  7. //确定id相同

  8. if(elem.attributes['id'].value == id){

  9. return elem;

  10. }else{

  11. //如果没有ID相同的,那么就遍历所有元素的集合找到id相同的元素

  12. for(var i=1;i<document.all[id].length;i++) {

  13. if(document.all[id][i].attributes['id'].value == id){

  14. return document.all[id][i];

  15. }

  16. }

  17. }

  18. }

  19. return elem;

  20. };

  21. };

转载于:https://my.oschina.net/u/195341/blog/203216

使用Ext Form自动绑定Html中的Form元素相关推荐

  1. jquery form自动绑定表单内容

    $(#表单).serialize()自动绑定

  2. Gin 框架学习笔记(02)— 参数自动绑定到结构体

    参数绑定模型可以将请求体自动绑定到结构体中,目前支持绑定的请求类型有 JSON .XML .YAML 和标准表单 form数据 foo=bar&boo=baz 等.换句话说,只要定义好结构体, ...

  3. 丁鹿学堂:2023前端开发vue3入门指南(vu3视图自动绑定案例解析)

    vue3中数据和视图自动绑定 vue3中data中的数据,会自动和使用它的视图绑定,数据发生变化时视图会自动更细,无需我们手动操作dom 案例:创建一个按钮,记录点击次数. <!DOCTYPE ...

  4. [html] html5中的form怎么关闭自动完成?

    [html] html5中的form怎么关闭自动完成? 设置form的autocomplete属性为off 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起 ...

  5. react回调函数_React中的回调中自动绑定ES6类函数

    在使用ES6类的React组件时,您必须遇到这种现象,必须显式绑定类函数,然后将其传递给诸如onClick.例如,采用以下示例. import React from 'react';class MyC ...

  6. 跨境电商ERP中的自动化 2.平台商品和本地单品自动绑定

    今天继续讲解跨境电商ERP中的自动化,这篇主要讲解平台商品和本地单品如何绑定,从而实现对本地单品库存的管理. 博客搬家啦,新地址: https://www.navisoft.com.cn 平台商品有个 ...

  7. java resultset 赋值_ResultSet数据自动绑定到JavaBean中 | 学步园

    由于需要用jdbc写点程序,不使用Hibernate , mybatis等框架,在设置结果集到bean时相当麻烦,所以写了一个专门完成此功能的类 package com.ehl.dc.authoriz ...

  8. springmvc请求参数获取(自动绑定)的几种方法

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /*** 1.直接把表单的参数写在Controller相应的方法的形参中* @para ...

  9. mvvm 自动绑定_ZK的实际应用:MVVM –表单绑定

    mvvm 自动绑定 这是我们从头开始构建ZK应用程序的第二集. 上一篇文章介绍了使用MVVM将数据加载和呈现到表中. 在本文中,我们将向您介绍ZK MVVM的表单绑定. 目的 我们将构建一个" ...

最新文章

  1. 东南大学和山东大学计算机学院,东南大学和山东大学都是985、211哪所综合实力更强些呢?...
  2. 哈哈,我的Blog开通了。。。
  3. Ajax — cropper (图片剪裁)基本用法
  4. java中jsp标准动作_JavaBean和jsp标准动作
  5. 米熊科技:给烘培加点“云”的味道
  6. ubuntu下安装oracle
  7. weblogic问题: Unable to resolve 'jdbc.mydb'. Resolved 'jdbc'; remaining name '
  8. golang中获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商等
  9. 图的深度优先遍历和宽度优先遍历C语言,图的遍历BFS广度优先搜索
  10. 第二日(1)一个IDA下载地址
  11. rs485的1:n计算机连接和n:n的主从plc通讯,富士人机界面与GE90-70 PLC N:1通讯在轧钢生产线的应用...
  12. 为什么越来越多的人从开发转测试?
  13. include指令包含网站banner和版权信息栏
  14. c语言写txt文件fwrite,文件操作 fwrite,该怎么处理
  15. 【转摘】著名画家毕建勋 学画笔记
  16. Django分页,过滤:
  17. php steam 第三方登录,Steam第三方授权登录异常 《绝地求生》国服绑定中招
  18. 【自然语言处理NLP】中文语料整理【情感分析、文本分类、摘要、实体分析】
  19. Mac 编译运行ET6.0Demo
  20. 首届中国网络文学论坛

热门文章

  1. echarts的词云图表类型有哪些_词云图的几种制作方法评测,你pick哪款
  2. pygame做的著名游戏_用python写游戏之2D跑酷游戏(一)
  3. 微信同步通讯录服务器繁忙,企业微信同步通讯录时提示 mobile existed
  4. java8 同步队列_秋招之路8:JAVA锁体系和AQS抽象队列同步器
  5. Java项目:学生选课系统(java+javaweb+jdbc)
  6. 军用软件概算计价规范_工程造价五算:估算、概算、预算、结算、决算
  7. Swing 实现聊天系统 私发与群发
  8. Typora链接跳转,页内和页外
  9. 仿斗鱼聊天:基于CoreText的面向对象图文排版工具AWRichText
  10. 数据库连接池,实现及分析