Already tried, but still not working ! Amjad
-----Original Message----- From: Saul Qunming Yuan [mailto:[EMAIL PROTECTED] Sent: Tuesday, February 08, 2005 7:35 PM To: Struts Users Mailing List Subject: Re: Struts validator [ client side error when using date validator] Off the top of my head, try using: datePatternStrict instead of datePattern in <var-name> in your validation.xml. Saul > Hi, > > I have configured and used struts validator for my application, > Server side validation is working perfectly... > > For client side, the required validator is working fine, but the date > ( for example) is not working and giving a java script error " > datePattern" has no properties. > > > > Please help. > > > Thanx in advance > Amjad > > > --------------Snippet from validation.xml----------------- > <field > property="startDate" > depends="date"> > <arg0 key="label.startDate"/> > <var> > <var-name>datePattern</var-name> > <var-value>dd/MM/yyyy</var-value> > </var> > </field> > > > --- Snippet from validation-rules.xml -- ----- --- --- > <validator name="date" > classname="org.apache.struts.validator.FieldChecks" > method="validateDate" > methodParams="java.lang.Object, > org.apache.commons.validator.ValidatorAction, > org.apache.commons.validator.Field, > org.apache.struts.action.ActionErrors, > javax.servlet.http.HttpServletRequest" > depends="" > msg="errors.date" > jsFunctionName="DateValidations"> > > <javascript><![CDATA[ > function validateDate(form) { > var bValid = true; > var focusField = null; > var i = 0; > var fields = new Array(); > oDate = new DateValidations(); > for (x in oDate) { > var value = form[oDate[x][0]].value; > var datePattern = oDate[x][2]("datePatternStrict"); > if ((form[oDate[x][0]].type == 'text' || > form[oDate[x][0]].type == 'textarea') && > (value.length > 0) && > (datePattern.length > 0)) { > var MONTH = "MM"; > var DAY = "dd"; > var YEAR = "yyyy"; > var orderMonth = datePattern.indexOf(MONTH); > var orderDay = datePattern.indexOf(DAY); > var orderYear = datePattern.indexOf(YEAR); > if ((orderDay < orderYear && orderDay > > orderMonth)) { > var iDelim1 = orderMonth + MONTH.length; > var iDelim2 = orderDay + DAY.length; > var delim1 = datePattern.substring(iDelim1, > iDelim1 + 1); > var delim2 = datePattern.substring(iDelim2, > iDelim2 + 1); > if (iDelim1 == orderDay && iDelim2 == > orderYear) { > dateRegexp = new > RegExp("^(\\d{2})(\\d{2})(\\d{4})$"); > } else if (iDelim1 == orderDay) { > dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" > + delim2 + "](\\d{4})$"); > } else if (iDelim2 == orderYear) { > dateRegexp = new RegExp("^(\\d{2})[" + > delim1 + "](\\d{2})(\\d{4})$"); > } else { > dateRegexp = new RegExp("^(\\d{2})[" + > delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$"); > } > var matched = dateRegexp.exec(value); > if(matched != null) { > if (!isValidDate(matched[2], matched[1], > matched[3])) { > if (i == 0) { > focusField = form[oDate[x][0]]; > } > fields[i++] = oDate[x][1]; > bValid = false; > } > } else { > if (i == 0) { > focusField = form[oDate[x][0]]; > } > fields[i++] = oDate[x][1]; > bValid = false; > } > } else if ((orderMonth < orderYear && orderMonth > > orderDay)) { > var iDelim1 = orderDay + DAY.length; > var iDelim2 = orderMonth + MONTH.length; > var delim1 = datePattern.substring(iDelim1, > iDelim1 + 1); > var delim2 = datePattern.substring(iDelim2, > iDelim2 + 1); > if (iDelim1 == orderMonth && iDelim2 == > orderYear) { > dateRegexp = new > RegExp("^(\\d{2})(\\d{2})(\\d{4})$"); > } else if (iDelim1 == orderMonth) { > dateRegexp = new > RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$"); > } else if (iDelim2 == orderYear) { > dateRegexp = new RegExp("^(\\d{2})[" + > delim1 + "](\\d{2})(\\d{4})$"); > } else { > dateRegexp = new RegExp("^(\\d{2})[" + > delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$"); > } > var matched = dateRegexp.exec(value); > if(matched != null) { > if (!isValidDate(matched[1], matched[2], > matched[3])) { > if (i == 0) { > focusField = form[oDate[x][0]]; > } > fields[i++] = oDate[x][1]; > bValid = false; > } > } else { > if (i == 0) { > focusField = form[oDate[x][0]]; > } > fields[i++] = oDate[x][1]; > bValid = false; > } > } else if ((orderMonth > orderYear && orderMonth < > orderDay)) { > var iDelim1 = orderYear + YEAR.length; > var iDelim2 = orderMonth + MONTH.length; > var delim1 = datePattern.substring(iDelim1, > iDelim1 + 1); > var delim2 = datePattern.substring(iDelim2, > iDelim2 + 1); > if (iDelim1 == orderMonth && iDelim2 == > orderDay) { > dateRegexp = new > RegExp("^(\\d{4})(\\d{2})(\\d{2})$"); > } else if (iDelim1 == orderMonth) { > dateRegexp = new > RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$"); > } else if (iDelim2 == orderDay) { > dateRegexp = new RegExp("^(\\d{4})[" + > delim1 + "](\\d{2})(\\d{2})$"); > } else { > dateRegexp = new RegExp("^(\\d{4})[" + > delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$"); > } > var matched = dateRegexp.exec(value); > if(matched != null) { > if (!isValidDate(matched[3], matched[2], > matched[1])) { > if (i == 0) { > focusField = form[oDate[x][0]]; > } > fields[i++] = oDate[x][1]; > bValid = false; > } > } else { > if (i == 0) { > focusField = form[oDate[x][0]]; > } > fields[i++] = oDate[x][1]; > bValid = false; > } > } else { > if (i == 0) { > focusField = form[oDate[x][0]]; > } > fields[i++] = oDate[x][1]; > bValid = false; > } > } > } > if (fields.length > 0) { > focusField.focus(); > alert(fields.join('\n')); > } > return bValid; > } > > function isValidDate(day, month, year) { > if (month < 1 || month > 12) { > return false; > } > if (day < 1 || day > 31) { > return false; > } > if ((month == 4 || month == 6 || month == 9 || month == > 11) && > (day == 31)) { > return false; > } > if (month == 2) { > var leap = (year % 4 == 0 && > (year % 100 != 0 || year % 400 == 0)); > if (day>29 || (day == 29 && !leap)) { > return false; > } > } > return true; > }]]> > </javascript> > > </validator> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]