现在的位置: 首页 > 综合 > 正文

ExtJS学习心得(三)

2013年08月02日 ⁄ 综合 ⁄ 共 9694字 ⁄ 字号 评论关闭
 

这里主要讲一下表单的应用:)

一、美化表单:
ExtJS自带的CSS效果可以让表单非常漂亮,
如果你觉自带的这些效果不够漂亮,可以到本站的资源下载专区,下载其他皮肤.
下载地址: [url=http://www.extjs.org.cn/index.php?q=download/]
在使用前先将ext-all.css文件导入页面,然后加入以下代码

  1. <div 
    class
    =
    "x-box-ml"
    >  
  2.         <div class
    =
    "x-box-mr"
    >  
  3.             <div class
    =
    "x-box-mc"
    >  
  4.                 <form id="regform"
    >  
  5.                     <fieldset align="middle"
    >  
  6.                         <legend><font class
    =
    "btitle"
     color=
    "#ff7300"
    >  
  7.                         <strong class
    =
    "style7"
    >帐号信息</strong></font></legend>  
  8.                         <table width="100%"
     align=
    "center"
    >  
  9.                             <tr>  
  10.                                 <td style="text-align: right"
    >  
  11.                                     会员Email  
  12.                                 </td>  
  13.                                 <td style="text-align: left"
     width=
    "300"
    >  
  14.                                     <input type="text"
     id=
    "UserEmail"
     name=
    "UserEmail"
     />  
  15.                                      <span id="msg"
     style=
    "display: none"
    ></span>  
  16.                                 </td>  
  17.                             </tr>  
  18.                             <tr>  
  19.                                 <td style="text-align: right"
    >  
  20.                                     登录密码  
  21.                                 </td>  
  22.                                 <td style="text-align: left"
    >  
  23.                                     <input id="UserPwd"
     name=
    "UserPwd"
     type=
    "password"
     />  
  24.                                 </td>  
  25.                             </tr>  
  26.                             <tr>  
  27.                                 <td style="text-align: right"
    >  
  28.                                     密码确认  
  29.                                 </td>  
  30.                                 <td style="text-align: left"
    >  
  31.                                     <input id="UserPwd1"
     name=
    "UserPwd1"
     type=
    "password"
     />  
  32.                                 </td>  
  33.                             </tr>  
  34.                         </table>  
  35.                     </fieldset>  
  36.                     <div id="regbutton"
    >  
  37.                     </div>  
  38.                 </form>  
  39.             </div>  
  40.         </div>  
  41.     </div>  
  42.     <div class
    =
    "x-box-bl"
    >  
  43.         <div class
    =
    "x-box-br"
    >  
  44.             <div class
    =
    "x-box-bc"
    >  
  45.             </div>  
  46.         </div>  
  47.     </div>  

二、绑定及验证表单:
以上只是将表单显示出来了,如需对表单域操作,还需要在JS里写相关的代码进行绑定

  1. var
     fm2 = 
    new
     Ext.form.BasicForm(
    'regform'
    );      
  2.                 //加入验证框
      
  3.                 fm2.add(new
     Ext.form.TextField({  
  4.                 allowBlank: false
    ,
    //不能为空
      
  5.                 blankText:'EMAIL不能为空,且请确保有效地址!'
    ,  
  6.                 //regex:re,//正则验证
      
  7.                 invalidText:'EMAIL格式不正确或此EMAIL已被注册!'
    ,  
  8.                 validator:checkEmail//自定义验证函数
      
  9.                 }).applyTo(userEmail));    
  10.                 
  11.                 fm2.add(new
     Ext.form.TextField({  
  12.                 allowBlank: false
    ,
    //不能为空
      
  13.                 blankText:'密码不能为空!'
      
  14.                 }).applyTo(Ext.get('UserPwd'
    )));  
  15.                  
  16.                 fm2.add(new
     Ext.form.TextField({  
  17.                 allowBlank: false
    ,
    //不能为空
      
  18.                 blankText:'密码不能为空!'
    ,  
  19.                 invalidText:'2次密码不相同!'
    ,  
  20.                 validator:vailda//自定义验证函数
      
  21.                 }).applyTo(Ext.get('UserPwd1'
    )));    
  22.                
  23.               fm2.add(new
     Ext.form.TextField({  
  24.                 allowBlank: false
    ,
    //不能为空
      
  25.                 blankText:'会员名称不能为空!'
      
  26.                 }).applyTo('CustomerName'
    ));  

ExtJS能对表单进行非常灵活的验证,上面是将表单的字段绑定起来,同时添加了相应的验证,并且也支持自定义函数验证,以下是对比2个输入框密码是否相同的自定义函数

  1.  
    /**
     
  2.  * 验证密码是否相同
     
  3.  */
      
  4. function
     vailda()  
  5. {  
  6.   if
    (Ext.get(
    'UserPwd'
    ).dom.value==Ext.get(
    'UserPwd1'
    ).dom.value)  
  7.       return
     
    true
    ;  
  8.   else
      
  9.       return
     
    false
    ;     
  10. }  

如果想让效果更好,还要在绑定代码里加多一句

  1. Ext.QuickTips.init();  

加入此代码后,表单验证的错误消息会在鼠标放到相应字段时显示出来

三、表单提交:
先将提交按钮进行注册,然后再对此按钮进行操作

  1. //注册按钮
      
  2.               Ext.get('regform'
    ).un(
    "submit"
    , fm2.onSubmit, fm2);  
  3.               var
     regButton = 
    new
     Ext.Button(
    'regbutton'
    , {  
  4.               text: ' 注 册 '
    ,   
  5.                       handler: function
    (){  
  6.                         if
     (fm2.isValid()) {  
  7.                           Ext.Msg.show({  
  8.                            title:'再确认一下'
    ,  
  9.                            modal : false
    ,  
  10.                            msg: '您确定资料正确吗?'
    ,  
  11.                            buttons: Ext.Msg.OKCANCEL,  
  12.                            fn:  function
    (btn, text){  
  13.                                 if
     (btn == 
    'ok'
    ){  
  14.                                     fm2.submit({  
  15.                                         url: 'Register.htm'
    ,  
  16.                                         params: {  
  17.                                         oper: 'submit'
      
  18.                                         },  
  19.                                         msgethod: 'POST'
    ,  
  20.                                         waitMsg:'正在提交,请稍等'
      
  21.                                         });  
  22.                                 }   
  23.                             },  
  24.                            animEl: 'regbutton'
      
  25.                         }).getDialog().moveTo(200, 100);  
  26.                         } else
     {  
  27.                             Ext.Msg.show({  
  28.                            title:'信息'
    ,  
  29.                            msg: '请填写完整后再提交!'
    ,  
  30.                            modal : false
    ,  
  31.                            buttons: Ext.Msg.OK  
  32.                             }).getDialog().moveTo(200, 100);  
  33.                         }  
  34.                       }   
  35.                 });  
  36.                 fm2.on({  
  37.                     //提交之前
      
  38.                     beforeaction: function
    (form, action){  
  39.                         regButton.disable();  
  40.                     },  
  41.                     //提交完成后
      
  42.                     actioncomplete: function
    (form, action){              
  43.                         if
    (action.type == 
    'submit'
    ){  
  44.                             regButton.enable();  
  45.                           }          
  46.                         if
    (action.result.success){  
  47.                         Cookies.set('Allcard_userName'
    , Ext.get(
    'CustomerName'
    ).dom.value);  
  48.                         Ext.Msg.show({  
  49.                            title:'成功'
    ,  
  50.                            msg: '恭喜,您已注册成功!'
    ,  
  51.                            modal : false
    ,  
  52.                            fn: showResult,  
  53.                            buttons: Ext.Msg.OK  
  54.                         }).getDialog().moveTo(200, 100);      
  55.                         }  
  56.                         else
    {  
  57.                         Ext.Msg.show({  
  58.                            title:'错误'
    ,  
  59.                            msg: '抱歉!您注册失败,请联系管理员!'
    ,  
  60.                            modal : false
    ,  
  61.                            buttons: Ext.Msg.OK  
  62.                         }).getDialog().moveTo(200, 100);  
  63.                         }              
  64.                     },  
  65.                     //提交失败后
      
  66.                     actionfailed: function
    (form, action){  
  67.                         regButton.enable();  
  68.                     }  
  69.                 });  

其中waitMsg即指定提交时loading的文字,animEl则绑定提交按钮的特效,在fm2.on里就写表单提交前后的相应事件,表单的事件基本上就写完了,剩下的就是后台处理方法,我上一篇已有说明,在此就不再说了

该系列文章引用自:
winson的博客天空
http://www.cnblogs.com/winsonet/

抱歉!评论已关闭.