Ext与现有项目的结合(一)-完全封装已有的HTML元素使之成为Ext的组件

本文介绍了一种将HTML页面元素转换为ExtJS组件的方法,通过简单的代码实现,使得原有页面能够无缝对接ExtJS,增强页面交互性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 近来由于公司准备引入Ext做表现层的一些东西,对于项目中现有的页面与Ext的Form Widget无法兼容,所以产生了使用Ext的Comp替换现有的HTML Element的想法,代码如下,经过简单测试,基本可以满足一般的HTML页面元素无损封装,同时包括了后期对于封装好的Ext Comp使用Ext的一些事件和特效做了准备。

  1. Ext.onReady(function() {
  2.     Ext.BLANK_IMAGE_URL = 'http://www.cnblogs.com/resources/images/default/s.gif';
  3.     Ext.QuickTips.init();
  4.     /**//**
  5.      * button
  6.      */
  7.     var objArray = Ext.DomQuery.select("input[type=submit]");
  8.     Ext.each(objArray, function(obj) {
  9.         var btn = new Ext.Button({
  10.             text : obj.value,
  11.             applyTo : obj,
  12.             handler : obj.onclick,
  13.             type : obj.type
  14.         });
  15.         btn.getEl().replace(Ext.get(obj));
  16.     });
  17.     var objArray = Ext.DomQuery.select("input[type=reset]");
  18.     Ext.each(objArray, function(obj) {
  19.         var btn = new Ext.Button({
  20.             text : obj.value,
  21.             applyTo : obj,
  22.             handler : obj.onclick,
  23.             type : obj.type
  24.         });
  25.         btn.getEl().replace(Ext.get(obj));
  26.     });
  27.     var objArray = Ext.DomQuery.select("input[type=button]");
  28.     Ext.each(objArray, function(obj) {
  29.         var btn = new Ext.Button({
  30.             text : obj.value,
  31.             applyTo : obj,
  32.             handler : obj.onclick,
  33.             type : obj.type
  34.         });
  35.         btn.getEl().replace(Ext.get(obj));
  36.     });
  37.     /**//**
  38.      * text and textarea and password and file
  39.      */
  40.     var objArray = Ext.DomQuery.select("input[type=text]");
  41.     Ext.each(objArray, function(obj) {
  42.         var txtField = new Ext.form.TextField({
  43.             applyTo : obj,
  44.             validationEvent : 'blur',
  45.             validator : function() {
  46.                 Ext.Ajax.request({
  47.                     url : '1.htm',
  48.                     success : function(response) {
  49.                         txtField.clearInvalid();
  50.                         txtField.markInvalid(response.responseText);
  51.                     },
  52.                     failure : function() {
  53.                         alert(1);
  54.                     }
  55.                 });
  56.             },
  57.             allowBlank : ((obj.attributes.getNamedItem("notNull") || obj.attributes
  58.                     .getNamedItem("notnull")) ? false : true),
  59.             blankText : '该字段不能为空'
  60.         });
  61.     });
  62.     var objArray = Ext.DomQuery.select("input[type=password]");
  63.     Ext.each(objArray, function(obj) {
  64.         var txtField = new Ext.form.TextField({
  65.             applyTo : obj,
  66.             inputType : 'password'
  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.             applyTo : 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.             applyTo : 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.             applyTo : obj
  91.         });
  92.     });
  93.     /**//**
  94.      * select or comboBox
  95.      */
  96.     var objArray = Ext.DomQuery.select("select");
  97.     Ext.each(objArray, function(obj) {
  98.         var btn = new Ext.form.ComboBox({
  99.             typeAhead : true,
  100.             triggerAction : 'all',
  101.             transform : obj,
  102.             forceSelection : true
  103.         });
  104.     });
  105. })

原型页面

 

  1. <html>
  2.     <head>
  3.         <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  4.         <title>test</title>
  5.         <link rel="stylesheet" type="text/css"
  6.             href="resources/css/ext-all.css" />
  7.         <script type="text/javascript" src="adapter/ext/ext-base.js"></script>
  8.         <script type="text/javascript" src="ext-all-debug.js"></script>
  9.         <script type="text/javascript" src="example-form.js"></script>
  10.     </head>
  11.     <body>
  12.         <form>
  13.             <input type="submit" value="asdqweqwe" onclick="alert(2)">
  14.             <input type="text" notnull>
  15.             <input type="text">
  16.             <input type="password">
  17.             <input type="file">
  18.             <textarea></textarea>
  19.             <input type="checkbox">
  20.             <input type="radio" name="q">qweqwe</input>
  21.             <input type="radio" name="q">qweqwe</input>
  22.             <select name="s">
  23.                 <option value="kkkkk">
  24.                     pp
  25.                 </option>
  26.                 <option value="gg">
  27.                     ww
  28.                 </option>
  29.             </select>
  30.         </form>
  31.     </body>
  32. </html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值