source: trunk/phpgwapi/js/tools/xform.js @ 2802

Revision 2802, 2.1 KB checked in by rodsouza, 14 years ago (diff)

Ticket #1058 - Permitindo o envio de formulário por requisição background

Line 
1( function( )
2{
3        var _connector = new XConnector;
4
5        function XForm( )
6        {
7                if ( ! ( arguments.length && arguments[ 0 ] && arguments[ 0 ].nodeName && arguments[ 0 ].nodeName.toLowerCase( ) == 'form' ) )
8                        return false;
9
10                var _form = arguments[ 0 ];
11                var _handler = null;
12
13                if ( arguments.length > 1 && arguments[ 1 ] && arguments[ 1 ].constructor == Function )
14                        _handler = arguments[ 1 ];
15
16                var a = [ ];
17                var _post = [ ];
18
19                function _input( _element )
20                {
21                        switch ( _element.type.toLowerCase( ) )
22                        {
23                                case 'hidden' :
24                                case 'submit' :
25                                case 'text' :
26                                        _post[ _post.length ] = _element.name + '=' + escape( _element.value.trim( ) );
27                                        break;
28                                case 'checkbox' :
29                                        if ( _element.checked )
30                                        {
31                                                _post[ _post.length ] = _element.name + '=' + escape( _element.value );
32                                                break;
33                                        }
34                                default :
35                                        a[ a.length ] = " input - " + _element.type + "\n\t" + _element.name;
36                        }
37                }
38
39                function _select( _element )
40                {
41                        if ( _element.type == 'select-one' )
42                                _post[ _post.length ] = _element.name + '=' + escape( _element.value );
43
44                        if ( _element.type == 'select-multiple' )
45                                for ( var i = 0; i < _element.length; i++ )
46                                        if ( _element.options[ i ].selected )
47                                                _post[ _post.length ] = _element.name + '=' + escape( _element.options[ i ].value );
48                }
49
50                function _textarea( _element )
51                {
52                        _post[ _post.length ] = _element.name + '=' + escape( _element.value.trim( ) );
53                }
54
55                function _send( )
56                {
57                        _connector.go(
58                        {
59                                'access' : _form.action,
60                                'handler' : _handler,
61                                'post' : _post.sort( ).join( "&" )
62                        } );
63                }
64
65                for ( var i = 0; i < _form.length; i++ )
66                        if ( _form[ i ].name )
67                                switch ( _form[ i ].nodeName.toLowerCase( ) )
68                                {
69                                        case 'input' :
70                                                _input( _form[ i ] );
71                                                break;
72                                        case 'select' :
73                                                _select( _form[ i ] );
74                                                break;
75                                        case 'textarea' :
76                                                _textarea( _form[ i ] );
77                                                break;
78                                        default :
79                                                a[ a.length ] = _form[ i ].nodeName  + "\t\t" + _form[ i ].type + "\t" + _form[ i ].name;
80                                }
81
82                //alert( a.join( "\n" ) );
83                //alert( _post.sort( ).join( "\n" ) );
84
85                _send( );
86
87                return false;
88        }
89
90        window.XForm = XForm;
91} )( );
Note: See TracBrowser for help on using the repository browser.