Changeset 572

Show
Ignore:
Timestamp:
01/25/06 14:07:30 (3 years ago)
Author:
therve@gmail.com
Message:

Correct Bug in formContents

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • mochikit/branches/scriptaculous/MochiKit/DOM.js

    r552 r572  
    218218}; 
    219219 
    220 MochiKit.DOM.formContents = function (elem/* = document */) { 
     220MochiKit.DOM.formContents2 = function (elem/* = document */) { 
    221221    var names = []; 
    222222    var values = []; 
     
    238238            } 
    239239            if (elem.tagName == "SELECT") { 
    240                 var opts = elem.options; 
    241                 for (var i=0; i < opts.length; i++) { 
    242                     var opt = opts[i]; 
    243                     if (!opt.selected) { 
    244                         continue; 
     240                if (elem.type == "select-one") { 
     241                    var index = elem.selectedIndex; 
     242                    if (index >= 0) { 
     243                        var opt = elem.options[index]; 
     244                        names.push(name); 
     245                        values.push((opt.value) ? opt.value : opt.text); 
    245246                    } 
    246                     names.push(name); 
    247                     values.push((opt.value) ? opt.value : opt.text); 
     247                } else { 
     248                    var opts = elem.options; 
     249                    for (var i=0; i < opts.length; i++) { 
     250                        var opt = opts[i]; 
     251                        alert("opt " + opts[i].value + " " + name); 
     252                        if (!opt.selected) { 
     253                            continue; 
     254                        } 
     255                        names.push(name); 
     256                        values.push((opt.value) ? opt.value : opt.text); 
     257                    } 
    248258                } 
    249259            } else { 
     
    257267    return [names, values]; 
    258268}; 
     269 
     270MochiKit.DOM.formContents = function (elem/* = document */) { 
     271    var names = []; 
     272    var values = []; 
     273    var m = MochiKit.Base; 
     274    var self = MochiKit.DOM; 
     275    if (typeof(elem) == "undefined" || elem == null) { 
     276        elem = self._document; 
     277    } else { 
     278        elem = self.getElement(elem); 
     279    } 
     280    m.nodeWalk(elem, function (elem) { 
     281        var name = elem.name; 
     282        if (m.isNotEmpty(name)) { 
     283            var tagName = elem.nodeName; 
     284            if (tagName == "INPUT" 
     285                && (elem.type == "radio" || elem.type == "checkbox") 
     286                && !elem.checked 
     287            ) { 
     288                return null; 
     289            } 
     290            if (tagName == "SELECT") { 
     291                if (elem.type == "select-one") { 
     292                    var index = elem.selectedIndex; 
     293                    if (index >= 0) { 
     294                        var opt = elem.options[index]; 
     295                        names.push(name); 
     296                        values.push((opt.value) ? opt.value : opt.text); 
     297                    } 
     298                    return null; 
     299                } else { 
     300                    var opts = elem.options; 
     301                    for (var i=0; i < opts.length; i++) { 
     302                        var opt = opts[i]; 
     303                        if (!opt.selected) { 
     304                            continue; 
     305                        } 
     306                        names.push(name); 
     307                        values.push((opt.value) ? opt.value : opt.text); 
     308                    } 
     309                    return null; 
     310                } 
     311            } 
     312            if (tagName == "FORM" || tagName == "P" || tagName == "SPAN" 
     313                || tagName == "DIV" 
     314            ) { 
     315                return elem.childNodes; 
     316            } 
     317            names.push(name); 
     318            values.push(elem.value || ''); 
     319            return null; 
     320        } 
     321        return elem.childNodes; 
     322    }); 
     323    return [names, values]; 
     324}; 
     325 
    259326 
    260327MochiKit.DOM.withDocument = function (doc, func) {