欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用ext2的form提交表单(非AJAX方式)

程序员文章站 2022-07-15 15:17:16
...

http://beckrabbit.iteye.com/blog/132686  非ajax方式提交表单

 

  1. var simple = new Ext.form.FormPanel({
  2. url:'../userlogin., do'
  3. //实现非AJAX提交表单一定要加下面的两行!
  4. /*onSubmit: Ext.emptyFn,    //onSubmit没有起作用
  5. submit: function() {
  6. //有疑问的地方
  7. this.getEl().dom.action='../userlogin.do';
  8. this.getEl().dom.submit();
  9. }, */
  10. buttons: [{
  11. text: '登录',
  12. type:'button',
  13. id:'login',
  14. handler: login
  15. },{
  16. text: '重置',
  17. type:'reset',
  18. id:'clear',
  19. handler: reset
  20. } ]

function login(){

    alert('form submit!');
      simple.getForm().getEl().dom.action='www.baidu.com';
      simple.getForm().getEl().dom.submit();

}

    handler如何传递参数?例如:如何向function login里传递action的值?
    关于回调函数指定参数问题,由来已久,extjs简洁优雅完美的解决了这个问题。

    createDelegate ( [Object obj ] , [Array args ] , [Boolean/Number appendArgs ]  ) : Function



    返回一个函数, 这个函数调用原函数,原函数中的this指向obj ,关于这个函数的参数由 appendArgs 指定 :

    如 function2=function1.createDelegate(obj,args,appendArgs);

    function2 call function1 ,function1 中的 this == obj

    1. appendArgs false

    那么 调用 function2时传的参数被忽略,args数组参数作为function1的参数运行。

    2. appendArgs === true

    那么 调用 function2时传的参数放在args数组前面合成一个新的数组,作为function1的参数运行。

    3.typeof appendArgs == 'Number'

    假设 调用 function2时传的参数 为 array1 (注意要 slice 为 真正的 Array)
    那么将 args 数组插入到 array1 的指定 appendArgs位置 (利用 splice( appendArgs,0 ))
    然后再把最终数组 作为function1的参数运行。

      buttons: [{
                text: 'Save',
                type: 'button',
                id: 't',
               // handler: test
                handler: test2.createDelegate(this,'www.baidu.com',true)   //把this传进test2函数中,在函数中,也把www.baidu.com传进test2函数中
            },{
                text: 'Cancel'
            }]
    function test2(){

     alert('form submit---传url!' +this);
     }
     Ext.get('action_c').on('click',action_bc.createDelegate(Ext.get('action_c'),['自定义参数在第一位'],0));  
    ext 表单提交按钮与post表单值方法
    2008-08-20 11:14

    buttons: [{
                 text: '登录',
                 handler:function(){//当点击按钮执行这个函数
                             if(win.getComponent('login').form.isValid()){login为from的id
                             win.getComponent('login').form.submit({
                                 url:'login_chk.php',
                                 waitTitle:'提示',
                                 method: 'POST',
                                 waitMsg:'正在登录验证,请稍候...',
                                 success:function(form,action){//如果post成功执行这里
                                 var loginResult = action.result.success;
                                 if(loginResult == false){//如果login_chk.php返回false执行这里
                                     Ext.MessageBox.alert('提示', action.result.message);
                                 } else if(loginResult == true){//反之执行这里
                                     Ext.MessageBox.alert('提示', action.result.message);
                                     window.location.href='http://www.baidu.com';
                                 }                                                            
                   } ,
                   failure: function(form,action) {
                                       Ext.MessageBox.alert('提示', action.result.message);
                                       win.getComponent('login').form.reset();
                                  
               }                            
                         });
                         }
                         }
                     },{
                 text: '取消',
       handler:function(){simple.form.reset();}//重置表单
             }]