You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by rl...@apache.org on 2003/09/24 05:35:34 UTC

cvs commit: jakarta-struts/conf/share validator-rules.xml

rleland     2003/09/23 20:35:34

  Modified:    conf/share validator-rules.xml
  Log:
  Bug#:	18993, and Bug#:	11520
  Patches provided by  Greg Ludington,  Steve Stair, Saul Q Yuan
  Add ability of required to handle checkboxes, radio,select-one,
  and select-multiple field types.
  
  Revision  Changes    Path
  1.40      +125 -107  jakarta-struts/conf/share/validator-rules.xml
  
  Index: validator-rules.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/conf/share/validator-rules.xml,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- validator-rules.xml	9 Sep 2003 06:20:43 -0000	1.39
  +++ validator-rules.xml	24 Sep 2003 03:35:34 -0000	1.40
  @@ -65,8 +65,8 @@
                   oRequired = new required();
   
                   for (x in oRequired) {
  -                	var field = form[oRequired[x][0]];
  -                	
  +                    var field = form[oRequired[x][0]];
  +                    
                       if (field.type == 'text' ||
                           field.type == 'textarea' ||
                           field.type == 'file' ||
  @@ -74,29 +74,47 @@
                           field.type == 'password') {
                           
                           var value = '';
  -						// get field's value
  -						if (field.type == "select-one") {
  -							var si = field.selectedIndex;
  -							if (si >= 0) {
  -								value = field.options[si].value;
  -							}
  -						} else {
  -							value = field.value;
  -						}
  +                        // get field's value
  +                        if (field.type == "select-one") {
  +                            var si = field.selectedIndex;
  +                            if (si >= 0) {
  +                                value = field.options[si].value;
  +                            }
  +                        } else {
  +                            value = field.value;
  +                        }
                           
                           if (trim(value).length == 0) {
                           
  -	                        if (i == 0) {
  -	                            focusField = field;
  -	                        }
  -	                        fields[i++] = oRequired[x][1];
  -	                        isValid = false;
  +                            if (i == 0) {
  +                                focusField = field;
  +                            }
  +                            fields[i++] = oRequired[x][1];
  +                            isValid = false;
  +                        }
  +                    } else if (field.type == "select-multiple") { 
  +                        var numOptions = field.options.length;
  +                        lastSelected=-1;
  +                        for(loop=numOptions-1;loop>=0;loop--) {
  +                            if(field.options[loop].selected) {
  +                                lastSelected = loop;
  +                                value = field.options[loop].value;
  +                                break;
  +                            }
                           }
  -                    } else if ((field.length > 0) && (field[0].type == 'radio')) {
  +                        if(lastSelected < 0 || trim(value).length == 0) {
  +                            if(i == 0) {
  +                                focusField = field;
  +                            }
  +                            fields[i++] = oRequired[x][1];
  +                            isValid=false;
  +                        }
  +                    } else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) {
                           isChecked=-1;
                           for (loop=0;loop < field.length;loop++) {
                               if (field[loop].checked) {
                                   isChecked=loop;
  +                                break; // only one needs to be checked
                               }
                           }
                           if (isChecked < 0) {
  @@ -309,23 +327,23 @@
                   var fields = new Array();
                   oByte = new ByteValidations();
                   for (x in oByte) {
  -                	var field = form[oByte[x][0]];
  -                	
  +                    var field = form[oByte[x][0]];
  +                    
                       if (field.type == 'text' ||
                           field.type == 'textarea' ||
                           field.type == 'select-one' ||
  -						field.type == 'radio') {
  +                        field.type == 'radio') {
   
  -						var value = '';
  -						// get field's value
  -						if (field.type == "select-one") {
  -							var si = field.selectedIndex;
  -							if (si >= 0) {
  -								value = field.options[si].value;
  -							}
  -						} else {
  -							value = field.value;
  -						}
  +                        var value = '';
  +                        // get field's value
  +                        if (field.type == "select-one") {
  +                            var si = field.selectedIndex;
  +                            if (si >= 0) {
  +                                value = field.options[si].value;
  +                            }
  +                        } else {
  +                            value = field.value;
  +                        }
                           
                           if (value.length > 0) {
                               if (!isAllDigits(value)) {
  @@ -337,17 +355,17 @@
   
                               } else {
   
  -	                            var iValue = parseInt(value);
  -	                            if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
  -	                                if (i == 0) {
  -	                                    focusField = field;
  -	                                }
  -	                                fields[i++] = oByte[x][1];
  -	                                bValid = false;
  -	                            }
  +                                var iValue = parseInt(value);
  +                                if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
  +                                    if (i == 0) {
  +                                        focusField = field;
  +                                    }
  +                                    fields[i++] = oByte[x][1];
  +                                    bValid = false;
  +                                }
                               }
  -						}
  -						
  +                        }
  +                        
                       }
                   }
                   if (fields.length > 0) {
  @@ -381,23 +399,23 @@
                   var fields = new Array();
                   oShort = new ShortValidations();
                   for (x in oShort) {
  -                	var field = form[oShort[x][0]];
  -                	
  +                    var field = form[oShort[x][0]];
  +                    
                       if (field.type == 'text' ||
                           field.type == 'textarea' ||
                           field.type == 'select-one' ||
                           field.type == 'radio') {
                           
                           var value = '';
  -						// get field's value
  -						if (field.type == "select-one") {
  -							var si = field.selectedIndex;
  -							if (si >= 0) {
  -								value = field.options[si].value;
  -							}
  -						} else {
  -							value = field.value;
  -						}
  +                        // get field's value
  +                        if (field.type == "select-one") {
  +                            var si = field.selectedIndex;
  +                            if (si >= 0) {
  +                                value = field.options[si].value;
  +                            }
  +                        } else {
  +                            value = field.value;
  +                        }
                           
                           if (value.length > 0) {
                               if (!isAllDigits(value)) {
  @@ -409,15 +427,15 @@
   
                               } else {
                           
  -	                            var iValue = parseInt(value);
  -	                            if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {
  -	                                if (i == 0) {
  -	                                    focusField = field;
  -	                                }
  -	                                fields[i++] = oShort[x][1];
  -	                                bValid = false;
  -	                            }
  -	                       }
  +                                var iValue = parseInt(value);
  +                                if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {
  +                                    if (i == 0) {
  +                                        focusField = field;
  +                                    }
  +                                    fields[i++] = oShort[x][1];
  +                                    bValid = false;
  +                                }
  +                           }
                          }
                       }
                   }
  @@ -452,7 +470,7 @@
                   var fields = new Array();
                   oInteger = new IntegerValidations();
                   for (x in oInteger) {
  -                	var field = form[oInteger[x][0]];
  +                    var field = form[oInteger[x][0]];
   
                       if (field.type == 'text' ||
                           field.type == 'textarea' ||
  @@ -460,34 +478,34 @@
                           field.type == 'radio') {
                           
                           var value = '';
  -						// get field's value
  -						if (field.type == "select-one") {
  -							var si = field.selectedIndex;
  -						    if (si >= 0) {
  -							    value = field.options[si].value;
  -						    }
  -						} else {
  -							value = field.value;
  -						}
  +                        // get field's value
  +                        if (field.type == "select-one") {
  +                            var si = field.selectedIndex;
  +                            if (si >= 0) {
  +                                value = field.options[si].value;
  +                            }
  +                        } else {
  +                            value = field.value;
  +                        }
                           
                           if (value.length > 0) {
                           
                               if (!isAllDigits(value)) {
                                   bValid = false;
                                   if (i == 0) {
  -	                                focusField = field;
  -	                            }
  -						        fields[i++] = oInteger[x][1];
  -						        
  +                                    focusField = field;
  +                                }
  +                                fields[i++] = oInteger[x][1];
  +                                
                               } else {
  -	                            var iValue = parseInt(value);
  -	                            if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
  -	                                if (i == 0) {
  -	                                    focusField = field;
  -	                                }
  -	                                fields[i++] = oInteger[x][1];
  -	                                bValid = false;
  -	                           }
  +                                var iValue = parseInt(value);
  +                                if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
  +                                    if (i == 0) {
  +                                        focusField = field;
  +                                    }
  +                                    fields[i++] = oInteger[x][1];
  +                                    bValid = false;
  +                               }
                              }
                          }
                       }
  @@ -555,23 +573,23 @@
                   var fields = new Array();
                   oFloat = new FloatValidations();
                   for (x in oFloat) {
  -                	var field = form[oFloat[x][0]];
  -                	
  +                    var field = form[oFloat[x][0]];
  +                    
                       if (field.type == 'text' ||
                           field.type == 'textarea' ||
                           field.type == 'select-one' ||
                           field.type == 'radio') {
                           
  -                    	var value = '';
  -						// get field's value
  -						if (field.type == "select-one") {
  -							var si = field.selectedIndex;
  -							if (si >= 0) {
  -							    value = field.options[si].value;
  -							}
  -						} else {
  -							value = field.value;
  -						}
  +                        var value = '';
  +                        // get field's value
  +                        if (field.type == "select-one") {
  +                            var si = field.selectedIndex;
  +                            if (si >= 0) {
  +                                value = field.options[si].value;
  +                            }
  +                        } else {
  +                            value = field.value;
  +                        }
                           
                           if (value.length > 0) {
                               // remove '.' before checking digits
  @@ -591,14 +609,14 @@
                                   fields[i++] = oFloat[x][1];
   
                               } else {
  -	                            var iValue = parseFloat(value);
  -	                            if (isNaN(iValue)) {
  -	                                if (i == 0) {
  -	                                    focusField = field;
  -	                                }
  -	                                fields[i++] = oFloat[x][1];
  -	                                bValid = false;
  -	                            }
  +                                var iValue = parseFloat(value);
  +                                if (isNaN(iValue)) {
  +                                    if (i == 0) {
  +                                        focusField = field;
  +                                    }
  +                                    fields[i++] = oFloat[x][1];
  +                                    bValid = false;
  +                                }
                               }
                           }
                       }
  @@ -764,8 +782,8 @@
                  return bValid;
               }
   
  -	    function isValidDate(day, month, year) {
  -	        if (month < 1 || month > 12) {
  +        function isValidDate(day, month, year) {
  +            if (month < 1 || month > 12) {
                       return false;
                   }
                   if (day < 1 || day > 31) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org