How to Change PDF Form Field Background Color When Values Match
Question details
The user wants to dynamically change the background fill color of specific PDF form fields when their calculated values match another field, while accounting for hidden decimal precision issues.

- Product
- PDF Editors with Form JavaScript Support
- Device & OS
- not provided
- Scenario
- Creating an interactive financial PDF form where foreign currency conversions are rounded, and the field background visually indicates whether the sub-amounts match the total amount.
- Observed behavior
- Simple equivalence checks fail because the JavaScript engine calculates precise floating-point decimals (e.g., 0.199999) that do not match the visually rounded and formatted field values.
Ensure you are using a PDF editor that supports JavaScript for interactive forms, and take note of the exact field names (e.g., 'Total1' and 'Total2') you intend to compare.
Use a Custom JavaScript Calculation with Precision Rounding
Apply a custom JavaScript calculation to the target field that rounds both values before comparing them, then sets the background color accordingly.
PDF forms use JavaScript for calculations, which relies on floating-point arithmetic. This means a subtraction like 0.3 - 0.1 might yield 0.19999999999999998 instead of exactly 0.2. Because formatting only alters the displayed value and not the stored value, using a standard '==' operator will cause the match to fail.
To fix this, you should round the values explicitly within your script to a specific decimal place before running the comparison, ensuring the background color updates correctly.
Open your PDF in Form Editing mode. Right-click the target field (e.g., 'Total2' or 'SubAmount1') and select 'Properties' from the context menu.
Click on the 'Calculate' tab in the Properties dialog box, select the 'Custom calculation script' option, and click the 'Edit' button.
Define variables to retrieve and round the values of the fields being compared. For example: var val1 = Math.round(this.getField('Total1').value * 100) / 100;
Write an 'if/else' statement comparing the rounded values to change the fill color. Example: if (val1 === Math.round(event.value * 100) / 100) { event.target.fillColor = color.green; } else { event.target.fillColor = color.yellow; }
Click 'OK' to save the script, close the Properties dialog, and enter test values into your form to ensure the background color switches from yellow to green when the values match.

Create and Manage Interactive PDF Forms with WPS Office
WPS Office offers a comprehensive PDF editor that allows you to easily design interactive forms, edit field properties, and manage document calculations. With its lightweight design, you can seamlessly handle complex PDF workflows.
- 1. Open your PDF Document: Launch WPS Office and open the PDF form you want to modify.
- 2. Access the Form Tools: Click on the 'Form' tab located in the top ribbon to access the interactive field tools.
- 3. Edit Field Properties: Right-click any form field and select 'Properties' to adjust formatting, appearance, or background colors.
- 4. Save Your Interactive Form: Once your fields are configured, save the document to preserve your interactive form settings.

Frequently Asked Questions
Why do exact numbers sometimes fail to match in PDF form calculations?
PDF form calculations run on JavaScript, which uses floating-point math. This can introduce minor hidden decimal discrepancies (e.g., treating 0.2 as 0.199999). It is recommended to round the values or use a small tolerance range within your script before comparing them.
How do I reference a specific color in PDF JavaScript?
You can use standard predefined color constants such as color.red, color.green, color.blue, color.yellow, and color.transparent. For custom colors, you can provide an array defining the color space and values, such as ["RGB", 0.5, 0.8, 0.2].
Can I apply the same color-changing script to multiple fields?
Yes. Instead of copying the code into every field, you can create a Document-Level JavaScript function that takes the field name as a parameter, and simply call that function from the calculation script of each relevant sub-amount field.
What is the difference between a calculation script and a validation script?
A calculation script automatically triggers whenever any field in the entire document changes, making it ideal for running totals. A validation script only triggers when a user explicitly commits a new value to that specific field.




