Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Add days when checkbox is ticked

Avatar

Level 2

Hi

I am using below formcalc script to count weekdays in "Days" field.

var fromDate = Start_Date1

var toDate = End_Date1

if ( HasValue(fromDate) & HasValue(toDate) ) then

          var fromDateAsNum = Date2Num(fromDate, "YYYY-MM-DD", "en_IE")

          var toDateAsNum = Date2Num(toDate, "YYYY-MM-DD", "en_IE")

          if (toDateAsNum >= fromDateAsNum) then

var TotalDays = toDateAsNum - fromDateAsNum + 1

var currentDateNum = fromDateAsNum

var dayCnt = 0

for i=1 upTo TotalDays do

var dayOfWeek = Num2Date(currentDateNum,"E")

                              if (dayOfWeek == 5 | dayOfWeek == 6) then

                                        dayCnt = dayCnt + 1

                              endif

                              currentDateNum = currentDateNum + 1

endfor

$ = TotalDays - dayCnt

          else

$ = ""

          endif

else

          $ = ""

endif

I have two check box in the form, chkbox1 and chkbox2.

What I am trying to do, If one person ticked chkbox1 it will add 1(one) day to "Days" field and if one person ticked chkbox2 it will add 2 (two) days to "Days" field.

But i am unable to do it.

Can anyone please help me how to solve this as I am new to livecycle forms?

1 Accepted Solution

Avatar

Correct answer by
Level 7

Thats Great!

Should be able to use some if logic for it. I haven't tried it in javascript but my idea would be this.

Have a first date and last date field. Have the date you want to exclude in another.

In your calculating code, use logic for: if excludedDate is greaterthan the start date AND lessthan the end date, subtract one from the calculation.

An if statement calculating dates looks like this in javascript

if (excludedDate.rawValue > startDate.rawValue | excludedDate.rawValue < endDate.rawValue)

{

//do the calculation

}

View solution in original post

7 Replies

Avatar

Level 7

Hi,

After you have endfor, can you just add some if statements to cover if chkbox1 is checked, chkbox2 is checked or neither is checked and make the calculations?

Avatar

Level 2

Hi

Thanks for the response.

After you reply, I put below code in WeekDays

var fromDate = Start_Date1

var toDate = End_Date1

if ( HasValue(fromDate) & HasValue(toDate) ) then

          var fromDateAsNum = Date2Num(fromDate, "YYYY-MM-DD", "en_IE")

          var toDateAsNum = Date2Num(toDate, "YYYY-MM-DD", "en_IE")

          if (toDateAsNum >= fromDateAsNum) then

var TotalDays = toDateAsNum - fromDateAsNum + 1

var currentDateNum = fromDateAsNum

var dayCnt = 0

for i=1 upTo TotalDays do

var dayOfWeek = Num2Date(currentDateNum,"E")

                              if (dayOfWeek == 5 | dayOfWeek == 6) then

                                        dayCnt = dayCnt + 1

                              endif

                              currentDateNum = currentDateNum + 1

endfor

if (CB1 == 1) then

$ = TotalDays – dayCnt + 1

elseif (CB2 == 1) then

$ = TotalDays – dayCnt + 2

elseif (CB1 && CB2 == 0) then

$ = TotalDays - dayCnt

endif

          else

$ = ""

          endif

else

          $ = ""

endif

But I am getting below error message

screen-13.23.50[05.04.2018].png

As I am newbie in livecycle, please suggest what should I do next to solve the problem?

Thanks

Avatar

Level 7

Are you closing all your if statements? I count 6 started but only 4 ended.

Go to the location in the error and see what is there.

Avatar

Level 2

Hi

Thanks for the reply

I changed the code as below after endfor, and showing the error,

Error: Syntax error token near 'else' on line 47, column 4.

if (sickcb1 == 1) then

$ = TotalDays

else

$ = TotalDays - dayCnt

endif

endif

          else

$ = ""

          endif

else

          $ = ""

endif

can you please help

Rgds

Avatar

Level 7

What is on line 47 col 4, can you paste a screenshot with the line numbers?

Make sure your if count is correct, an else wont work outside an if statement if it is closed.

Avatar

Level 2

Hi

Thank for reply.

I removed one endif after $ = TotalDays - dayCnt and it worked!.

Another point is that if I want to exclude one specific day what type of code I shall use?

Suppose start date is 8th April 2018 and end date is 11th April 2018. I want to exclude 10th April from calculation.

Rgds

Avatar

Correct answer by
Level 7

Thats Great!

Should be able to use some if logic for it. I haven't tried it in javascript but my idea would be this.

Have a first date and last date field. Have the date you want to exclude in another.

In your calculating code, use logic for: if excludedDate is greaterthan the start date AND lessthan the end date, subtract one from the calculation.

An if statement calculating dates looks like this in javascript

if (excludedDate.rawValue > startDate.rawValue | excludedDate.rawValue < endDate.rawValue)

{

//do the calculation

}