...
Code Block |
---|
language | js |
---|
title | Calculated Value Script |
---|
linenumbers | true |
---|
|
//Assign a system calculated date based on data entry in another component.
var current = new Date(data.dateSigned);
if(data.signature && current.toString() === 'Invalid Date')
{
var d = new Date();
value = d.toLocaleDateString();
}
else
value = data.dateSigned; |
Add state control to check boxes to mimic radio button behavior
This script uses a Text Component (checkState) to preserve the last selected Checkbox Component. Use two or more checkboxes (this example shows 3) and adjust the script accordingly. In general, you should use a Radio Component to achieve this functionality. This is an advanced script and it's very easy to miss updating a checkbox name, which can cause unexpected behavior. Be sure to carefully inspect your script for errors when deploying. A working form example is available here.
Code Block |
---|
language | js |
---|
title | Calculated Value Script |
---|
linenumbers | true |
---|
|
//Add state control to checkboxes to mimic radio button behavior.
if(data.check1 === true && (data.checkState == '2' || data.checkState == '3'))
{
value = '1';
data.check2 = false;
data.check3 = false;
}
else if (data.check2 === true && (data.checkState == '1' || data.checkState == '3'))
{
value = '2';
data.check1 = false;
data.check3 = false;
}
else if (data.check3 === true && (data.checkState == '1' || data.checkState == '2'))
{
value = '3';
data.check1 = false;
data.check2 = false;
}
else if (data.check1 === true)
value = '1';
else if (data.check2 === true)
value = '2';
else if (data.check3 === true)
value = '3';
else
value = ''; |
Populate Username or Email Address of Logged in User
You can populate the Name or Email Address of a logged in user by placing the below code in the Calculated Value Rule area on the Data Tab.
Code Block |
---|
language | js |
---|
title | Calculated Value Script |
---|
linenumbers | true |
---|
|
//Capture the email of the current logged in user into the value of the selected control
value = Formio.getUser().data.email
//Capture the name of the current logged in user into the value of the selected control
value = Formio.getUser().data.name |
You can couple this rule with an if statement in a workflow to ensure it only fires once and does not overwrite the name/email if the form is loaded in additional workflow steps.
Populate Today's Date in a Text Field
You can populate today's date in a field for the purposes of tracking when a form was initally submitted and more. Its recommended you use this rule as a Custom Default value if you only want it to fire once.
Code Block |
---|
language | js |
---|
title | Calculated Value Script |
---|
linenumbers | true |
---|
|
var d = new Date();
value = d.toLocaleDateString(); |
You can modify the date format in any way you want, for example:
Code Block |
---|
language | js |
---|
title | Calculated Value Script |
---|
linenumbers | true |
---|
|
var d = new Date();
var options = {
year: "2-digit",
month: "2-digit",
day: "2-digit"
};
value = d.toLocaleDateString('en', options); |