Changeset 647

Show
Ignore:
Timestamp:
11/18/07 15:33:00 (1 year ago)
Author:
laurentj
Message:

fixed bug #334: on IE, submited values of buttons are labels instead of their real values

Files:

Legend:

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

    r644 r647  
    7272                        break; 
    7373                    case 'decimal' : 
    74                          var t = parseFloat(val); 
    75                         if(isNaN(t)){ 
    76                             ok = false; 
    77                         }else{ 
    78                             ok = ( t.toString() == val); 
    79                         } 
     74                        ok = ( -1 != val.search(/^\s*[\+\-]?\d+(\.\d+)?\s*$/)); 
    8075                        break; 
    8176                    case 'integer' : 
    82                         var t = parseInt(val); 
    83                         if(isNaN(t)){ 
    84                             ok = false; 
    85                         }else{ 
    86                             ok = ( t.toString() == val); 
    87                         } 
     77                        ok = ( -1 != val.search(/^\s*[\+\-]?\d+\s*$/)); 
    8878                        break; 
    8979                    case 'hexadecimal' :  
    90                         ok = (val.search(/^0x[a-f0-9A-F]+$/) != -1) 
     80                        ok = (val.search(/^0x[a-f0-9A-F]+$/) != -1); 
    9181                        break; 
    9282                    case 'datetime' :  
  • trunk/lib/jelix-www/js/jforms.js

    r644 r647  
    7272                        break; 
    7373                    case 'decimal' : 
    74                          var t = parseFloat(val); 
    75                         if(isNaN(t)){ 
    76                             ok = false; 
    77                         }else{ 
    78                             ok = ( t.toString() == val); 
    79                         } 
     74                        ok = ( -1 != val.search(/^\s*[\+\-]?\d+(\.\d+)?\s*$/)); 
    8075                        break; 
    8176                    case 'integer' : 
    82                         var t = parseInt(val); 
    83                         if(isNaN(t)){ 
    84                             ok = false; 
    85                         }else{ 
    86                             ok = ( t.toString() == val); 
    87                         } 
     77                        ok = ( -1 != val.search(/^\s*[\+\-]?\d+\s*$/)); 
    8878                        break; 
    8979                    case 'hexadecimal' :  
    90                         ok = (val.search(/^0x[a-f0-9A-F]+$/) != -1) 
     80                        ok = (val.search(/^0x[a-f0-9A-F]+$/) != -1); 
    9181                        break; 
    9282                    case 'datetime' :  
  • trunk/lib/jelix/forms/jFormsBase.class.php

    r645 r647  
    9898            if($ctrl->type=='checkbox'){ 
    9999                if($value){ 
    100                     $this->_container->datas[$name]= $ctrl->valueOnCheck; 
     100                    $value = $ctrl->valueOnCheck; 
    101101                }else{ 
    102                     $this->_container->datas[$name]= $ctrl->valueOnUncheck; 
     102                    $value = $ctrl->valueOnUncheck; 
    103103                } 
    104104            }elseif($ctrl->type=='upload'){ 
    105105                if(isset($_FILES[$name])){ 
    106                     $this->_container->datas[$name]= $_FILES[$name]['name']; 
     106                    $value = $_FILES[$name]['name']; 
    107107                }else{ 
    108                     $this->_container->datas[$name]= ''; 
     108                    $value= ''; 
    109109                } 
    110             }else{ 
    111                 $this->_container->datas[$name]= $value; 
    112             } 
     110            }elseif($ctrl->type=='submit' && $value) { 
     111                // because IE send the <button> content as value instead of the content of the  
     112                // "value" attribute, we should verify it and get the real value 
     113                $datas = $ctrl->datasource->getDatas(); 
     114                if(!isset($datas[$value])) { 
     115                    $datas=array_flip($datas); 
     116                    if(isset($datas[$value])) { 
     117                        $value = $datas[$value]; 
     118                    } 
     119                } 
     120            } 
     121            $this->_container->datas[$name]= $value; 
    113122        } 
    114123    } 
  • trunk/lib/jelix/forms/jFormsBase.class.php

    r645 r647  
    9898            if($ctrl->type=='checkbox'){ 
    9999                if($value){ 
    100                     $this->_container->datas[$name]= $ctrl->valueOnCheck; 
     100                    $value = $ctrl->valueOnCheck; 
    101101                }else{ 
    102                     $this->_container->datas[$name]= $ctrl->valueOnUncheck; 
     102                    $value = $ctrl->valueOnUncheck; 
    103103                } 
    104104            }elseif($ctrl->type=='upload'){ 
    105105                if(isset($_FILES[$name])){ 
    106                     $this->_container->datas[$name]= $_FILES[$name]['name']; 
     106                    $value = $_FILES[$name]['name']; 
    107107                }else{ 
    108                     $this->_container->datas[$name]= ''; 
     108                    $value= ''; 
    109109                } 
    110             }else{ 
    111                 $this->_container->datas[$name]= $value; 
    112             } 
     110            }elseif($ctrl->type=='submit' && $value) { 
     111                // because IE send the <button> content as value instead of the content of the  
     112                // "value" attribute, we should verify it and get the real value 
     113                $datas = $ctrl->datasource->getDatas(); 
     114                if(!isset($datas[$value])) { 
     115                    $datas=array_flip($datas); 
     116                    if(isset($datas[$value])) { 
     117                        $value = $datas[$value]; 
     118                    } 
     119                } 
     120            } 
     121            $this->_container->datas[$name]= $value; 
    113122        } 
    114123    } 
Download in other formats: Unified Diff Zip Archive