Getting form values by ID
Extract values from specific form fields using their unique identifiers for validation and dynamic processing:
- create a form with various input types and unique identifiers (Api/CreateTextForm, Api/CreateCheckBoxForm, Api/CreateComboBoxForm);
- retrieve specific form values by their key/ID (ApiDocument/GetFormsByKey, ApiFormBase/GetFormKey);
- validate form data and highlight required fields (ApiTextForm/GetText, ApiCheckBoxForm/IsChecked, ApiFormBase/SetBorderColor).
- Code
- Result
let doc = Api.GetDocument();
// Create a registration form with various field types
function createRegistrationForm() {
let paragraph = doc.GetElement(0);
paragraph.AddText("User Registration Form");
paragraph.SetFontSize(18 * 2);
paragraph.SetBold(true);
paragraph.SetJc("center");
// Email field (required)
paragraph = Api.CreateParagraph();
paragraph.AddText("Email (required): ");
paragraph.SetFontSize(14 * 2);
let emailForm = Api.CreateTextForm({
key: "email",
required: true,
placeholder: "Enter your email address",
maxCharacters: 50,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(emailForm);
doc.Push(paragraph);
// Full name field
paragraph = Api.CreateParagraph();
paragraph.AddText("Full Name: ");
paragraph.SetFontSize(14 * 2);
let nameForm = Api.CreateTextForm({
key: "full_name",
required: false,
placeholder: "Enter your full name",
maxCharacters: 100,
multiLine: false,
autoFit: true,
});
paragraph.AddElement(nameForm);
doc.Push(paragraph);
// Age selection
paragraph = Api.CreateParagraph();
paragraph.AddText("Age Group: ");
paragraph.SetFontSize(14 * 2);
let ageForm = Api.CreateComboBoxForm({
key: "age_group",
required: false,
placeholder: "Select age group",
editable: false,
autoFit: true,
items: ["18-25", "26-35", "36-45", "46-55", "55+"]
});
paragraph.AddElement(ageForm);
doc.Push(paragraph);
// Terms agreement checkbox (required)
paragraph = Api.CreateParagraph();
let termsCheckbox = Api.CreateCheckBoxForm({
key: "terms_agreed",
required: true,
tip: "You must agree to terms and conditions",
checked: false
});
paragraph.AddElement(termsCheckbox);
paragraph.AddText(" I agree to the terms and conditions (required)");
paragraph.SetFontSize(14 * 2);
doc.Push(paragraph);
// Newsletter subscription checkbox (optional)
paragraph = Api.CreateParagraph();
let newsletterCheckbox = Api.CreateCheckBoxForm({
key: "newsletter_subscription",
required: false,
tip: "Subscribe to our newsletter",
checked: false
});
paragraph.AddElement(newsletterCheckbox);
paragraph.AddText(" Subscribe to newsletter");
paragraph.SetFontSize(14 * 2);
doc.Push(paragraph);
}
// Function to validate form and get values by ID
function validateFormById() {
let validationResults = {};
let isFormValid = true;
// Check email field (required)
let emailForms = doc.GetFormsByKey("email");
if (emailForms.length > 0) {
let emailValue = emailForms[0].GetText();
validationResults.email = emailValue;
if (!emailValue || emailValue.trim() === "") {
// Highlight field in red if empty
emailForms[0].SetBorderColor(255, 0, 0);
isFormValid = false;
} else if (!emailValue.includes("@")) {
// Highlight field in orange if invalid format
emailForms[0].SetBorderColor(255, 165, 0);
isFormValid = false;
} else {
// Set green border if valid
emailForms[0].SetBorderColor(0, 255, 0);
}
}
// Check full name field
let nameForms = doc.GetFormsByKey("full_name");
if (nameForms.length > 0) {
let nameValue = nameForms[0].GetText();
validationResults.full_name = nameValue;
if (nameValue && nameValue.trim() !== "") {
nameForms[0].SetBorderColor(0, 255, 0);
}
}
// Check age group selection
let ageForms = doc.GetFormsByKey("age_group");
if (ageForms.length > 0) {
let ageValue = ageForms[0].GetText();
validationResults.age_group = ageValue;
if (ageValue && ageValue.trim() !== "") {
ageForms[0].SetBorderColor(0, 255, 0);
}
}
// Check terms agreement (required)
let termsForms = doc.GetFormsByKey("terms_agreed");
if (termsForms.length > 0) {
let termsChecked = termsForms[0].IsChecked();
validationResults.terms_agreed = termsChecked;
if (!termsChecked) {
// Highlight checkbox in red if not checked
termsForms[0].SetBorderColor(255, 0, 0);
isFormValid = false;
} else {
// Set green border if checked
termsForms[0].SetBorderColor(0, 255, 0);
}
}
// Check newsletter subscription (optional)
let newsletterForms = doc.GetFormsByKey("newsletter_subscription");
if (newsletterForms.length > 0) {
let newsletterChecked = newsletterForms[0].IsChecked();
validationResults.newsletter_subscription = newsletterChecked;
// Always green border for optional field
newsletterForms[0].SetBorderColor(0, 255, 0);
}
return { isValid: isFormValid, data: validationResults };
}
// Create the form
createRegistrationForm();
// Add some spacing
let paragraph = Api.CreateParagraph();
paragraph.AddText("");
doc.Push(paragraph);
// Add validation section
paragraph = Api.CreateParagraph();
paragraph.AddText("Form Validation Results:");
paragraph.SetFontSize(16 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);
// Perform validation and display results
let validation = validateFormById();
paragraph = Api.CreateParagraph();
if (validation.isValid) {
paragraph.AddText("✓ Form is valid and ready for submission");
paragraph.SetColor(0, 128, 0);
} else {
paragraph.AddText("✗ Form has validation errors (check highlighted fields)");
paragraph.SetColor(255, 0, 0);
}
paragraph.SetFontSize(14 * 2);
doc.Push(paragraph);
// Display extracted values
paragraph = Api.CreateParagraph();
paragraph.AddText("Extracted Values:");
paragraph.SetFontSize(14 * 2);
paragraph.SetBold(true);
doc.Push(paragraph);
for (let key in validation.data) {
paragraph = Api.CreateParagraph();
let value = validation.data[key];
if (typeof value === 'boolean') {
value = value ? 'Yes' : 'No';
}
paragraph.AddText(`${key}: ${value || 'Not provided'}`);
paragraph.SetFontSize(12 * 2);
doc.Push(paragraph);
}