Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #10453: forms.js.diff

File forms.js.diff, 1.9 kB (added by bwiart, 7 months ago)

diff file

  • /Users/bwiart/devel/ubik-batcher/prototype_trunk/src/form.js

    old new  
    2626    }); 
    2727     
    2828    return options.hash ? data : Object.toQueryString(data); 
     29  }, 
     30   
     31  _fastSerializeElements: function(elements, options) { 
     32    if (typeof options != 'object') options = { hash: !!options }; 
     33    else if (Object.isUndefined(options.hash)) options.hash = true; 
     34    var key, value, submitted = false, submit = options.submit; 
     35     
     36    var result = {}; 
     37    for(var i=0, size=elements.length; i <size; i++)  
     38    { 
     39                var element = elements[i]; 
     40                var name = element.name; 
     41        if (!name) 
     42                continue; 
     43 
     44        if (Form.Element.Serializers[element.tagName.toLowerCase()])  
     45        {  
     46                        if (!element.disabled) {  
     47                                key = name, value = Form.Element.Serializers[element.tagName.toLowerCase()](element);  
     48                                if (value != null && (element.type != 'submit' || (!submitted && 
     49                        submit !== false && (!submit || key == submit) && (submitted = true)))) {  
     50                                if (key in result) { 
     51                                    // a key is already present; construct an array of values 
     52                                    if (!Object.isArray(result[key])) result[key] = [result[key]]; 
     53                                    result[key].push(value); 
     54                                  } 
     55                                  else result[key] = value; 
     56                        }  
     57                        }  
     58                }  
     59        }  
     60  
     61    return options.hash ? result : Object.toQueryString(result); 
    2962  } 
    3063}; 
    3164 
     
    3467    return Form.serializeElements(Form.getElements(form), options); 
    3568  }, 
    3669   
     70  fastSerialize: function(form, options) { 
     71    return Form._fastSerializeElements($(form).getElementsByTagName('*'), options); 
     72  }, 
     73   
    3774  getElements: function(form) { 
    3875    return $A($(form).getElementsByTagName('*')).inject([],  
    3976      function(elements, child) {