Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Date validation based on dd/mm/yyy

Explorer ,
Apr 23, 2021 Apr 23, 2021

Hi all,

 

I have a date field where I need users to insert the exact date in format dd/mm/yyyy. I configured a custom Date field with the above format, but it seems if the users insert other formats like dd/mm, these formats are accepted and the current year is automatically displayed, while it's not assigned in the underlying field (please refer to the attachment).

 

I thought to configure a validation to ensure date is inserted with all its parts, and I used the following validation script which seems not working:

 

var myDate = event.target.valueAsString;
var DD = myDate.substr(0,2);
var MM = myDate.substr(3,2);
var YYYY = myDate.substr(6,2);
if ( (DD > 31 || DD < 1) || (MM > 12 || MM < 1) || (myDate.length != 10) || (myDate.substr(2,1) != "/") || (myDate.substr(5,1) != "/") )
{app.alert({ cMsg: "Please insert the full date in format dd/mm/yyyy", cTitle: "" });
event.rc = false;}

. Any help is really appreciated.

 

Thanks

Simone

 

TOPICS
JavaScript , PDF forms
1.6K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
1 ACCEPTED SOLUTION
Community Expert ,
Apr 23, 2021 Apr 23, 2021

I would check first that the input has the desired format (using a Regular Expression) and then that it's actually a valid date, by converting it to a Date object. Try it like this:

 

if (event.value) {
	var d = util.scand("dd/mm/yyyy", event.value);
	if (/^\d{2}\/\d{2}\/\d{4}$/.test(event.value)==false || d==null) {
		app.alert("Invalid date string entered. You must enter a date in the following pattern: dd/mm/yyyy");
		event.rc = false;
	}
}

 

View solution in original post

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 23, 2021 Apr 23, 2021

I would check first that the input has the desired format (using a Regular Expression) and then that it's actually a valid date, by converting it to a Date object. Try it like this:

 

if (event.value) {
	var d = util.scand("dd/mm/yyyy", event.value);
	if (/^\d{2}\/\d{2}\/\d{4}$/.test(event.value)==false || d==null) {
		app.alert("Invalid date string entered. You must enter a date in the following pattern: dd/mm/yyyy");
		event.rc = false;
	}
}

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Apr 23, 2021 Apr 23, 2021
LATEST

It works, thank you!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines