developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Ticket #636: 636-jForms-Javascript-error-handling-does-not-work-for-element-checkboxes.diff

File 636-jForms-Javascript-error-handling-does-not-work-for-element-checkboxes.diff, 5.4 KB (added by Julien, 13 years ago)
  • lib/jelix-www/js/jforms_light.js

     
    8484    },
    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                 }
     109                var item = elt.item(i);
     110                if (item.checked)
     111                    values.push(item.value);
    129112            }
     113            return values;
    130114        }
    131         return value;
     115        return '';
    132116    },
    133117
    134118    showHelp : function(aFormName, aControlName){
  • lib/jelix-www/js/jforms_jquery.js

     
    7575    },
    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                 }
     100                var item = elt.item(i);
     101                if (item.checked)
     102                    values.push(item.value);
    120103            }
     104            return values;
    121105        }
    122         return value;
     106        return '';
    123107    },
    124108
    125109    showHelp : function(aFormName, aControlName){