Changeset 1097

Show
Ignore:
Timestamp:
09/24/08 12:02:51 (4 months ago)
Author:
julieni
Message:

ticket #636: jForms: Javascript error handling does not work for element <checkboxes>

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/jelix-www/js/jforms_jquery.js

    r1083 r1097  
    7676 
    7777    getValue : function (elt){ 
    78         var value=''; 
    7978        if(elt.nodeType) { // this is a node 
    8079            switch (elt.nodeName.toLowerCase()) { 
    81             case "input": 
    82                 switch (elt.getAttribute("type")) { 
    83                 case "checkbox": 
    84                 case "radio": 
    85                     if (elt.checked) 
    86                         value = 'true'; 
    87                     else 
    88                         value = 'false'; 
    89                     break; 
    90                 default: 
    91                     value = elt.value; 
    92                     break; 
    93                 } 
    94                 break; 
    95             case "textarea": 
    96                 value= elt.value; 
    97                 break; 
    98             case "select": 
    99                 if (!elt.multiple) { 
    100                     value =  elt.value; 
    101                     break; 
    102                 } 
    103                 var options = elt.getElementsByTagName("option"); 
    104                 value = []; 
    105                 for (var i = 0; i < options.length; i++) { 
    106                     if (options[i].selected) { 
    107                         value.push(options[i].value); 
     80                case "input": 
     81                    if(elt.getAttribute('type') == 'checkbox') 
     82                        return elt.checked; 
     83                    return elt.value; 
     84                case "textarea": 
     85                    return elt.value; 
     86                case "select": 
     87                    if (!elt.multiple) 
     88                        return elt.value; 
     89                    var values = []; 
     90                    for (var i = 0; i < elt.options.length; i++) { 
     91                        if (elt.options[i].selected) 
     92                            values.push(elt.options[i].value); 
    10893                    } 
    109                 } 
    110                 break; 
     94                    return values; 
    11195            } 
    11296        } else if(elt.item){ 
    113             // this is a NodeList of radio buttons 
    114             value = []; 
     97            // this is a NodeList of radio buttons or multiple checkboxes 
     98            var values = []; 
    11599            for (var i = 0; i < elt.length; i++) { 
    116                 var radio = elt.item(i); 
    117                 if (radio.checked) { 
    118                     value.push(radio.value); 
    119                
    120             } 
    121         } 
    122         return value
     100                var item = elt.item(i); 
     101                if (item.checked) 
     102                    values.push(item.value); 
     103           
     104            return values; 
     105        } 
     106        return ''
    123107    }, 
    124108 
     
    307291}; 
    308292jFormsJQControlBoolean.prototype.check = function (val, jfrm) { 
    309     return (val == 'true' || val == 'false'); 
     293    return (val == true || val == false); 
    310294}; 
    311295 
  • trunk/lib/jelix-www/js/jforms_light.js

    r1083 r1097  
    8585 
    8686    getValue : function (elt){ 
    87         var value=''; 
    8887        if(elt.nodeType) { // this is a node 
    8988            switch (elt.nodeName.toLowerCase()) { 
    90             case "input": 
    91                 switch (elt.getAttribute("type")) { 
    92                 case "checkbox": 
    93                 case "radio": 
    94                     if (elt.checked) 
    95                         value = 'true'; 
    96                     else 
    97                         value = 'false'; 
    98                     break; 
    99                 default: 
    100                     value = elt.value; 
    101                     break; 
    102                 } 
    103                 break; 
    104             case "textarea": 
    105                 value= elt.value; 
    106                 break; 
    107             case "select": 
    108                 if (!elt.multiple) { 
    109                     value =  elt.value; 
    110                     break; 
    111                 } 
    112                 var options = elt.getElementsByTagName("option"); 
    113                 value = []; 
    114                 for (var i = 0; i < options.length; i++) { 
    115                     if (options[i].selected) { 
    116                         value.push(options[i].value); 
     89                case "input": 
     90                    if(elt.getAttribute('type') == 'checkbox') 
     91                        return elt.checked; 
     92                    return elt.value; 
     93                case "textarea": 
     94                    return elt.value; 
     95                case "select": 
     96                    if (!elt.multiple) 
     97                        return elt.value; 
     98                    var values = []; 
     99                    for (var i = 0; i < elt.options.length; i++) { 
     100                        if (elt.options[i].selected) 
     101                            values.push(elt.options[i].value); 
    117102                    } 
    118                 } 
    119                 break; 
     103                    return values; 
    120104            } 
    121105        } else if(elt.item){ 
    122             // this is a NodeList of radio buttons 
    123             value = []; 
     106            // this is a NodeList of radio buttons or multiple checkboxes 
     107            var values = []; 
    124108            for (var i = 0; i < elt.length; i++) { 
    125                 var radio = elt.item(i); 
    126                 if (radio.checked) { 
    127                     value.push(radio.value); 
    128                
    129             } 
    130         } 
    131         return value
     109                var item = elt.item(i); 
     110                if (item.checked) 
     111                    values.push(item.value); 
     112           
     113            return values; 
     114        } 
     115        return ''
    132116    }, 
    133117 
     
    316300}; 
    317301jFormsControlBoolean.prototype.check = function (val, jfrm) { 
    318     return (val == 'true' || val == 'false'); 
     302    return (val == true || val == false); 
    319303}; 
    320304 
  • trunk/lib/jelix/CREDITS

    r1090 r1097  
    3232 - jForms: wymeditor fields don't get updated before javascript form check (#687) 
    3333 - jTpl plugins: number_format modifier (#679) 
     34 - jForms: Javascript error handling does not work for element <checkboxes> (#636) 
    3435 
    3536Bastien Jaillot (aka bastnic) 
Download in other formats: Unified Diff Zip Archive