# Formula mode

Ever wished while filling in a form that you could quickly calculate basic math operations?

Well, AutoNumeric provides a quick way to enter and evaluate simple math expressions directly into the element!

Use case

Sometimes, you need to quickly calculate the product or the sum of two or more numbers, before entering the result in the AutoNumeric element.

For instance, you might ask yourself *"How many months are there in 14 years and 5 months ?"*, then you'd need to either make a mental calculation, or resort to using a calculator.

To speed things up and provide a lean user experience, AutoNumeric provides a *formula mode* which allows you to enter and evaluate simple math expressions very quickly.

Using our previous example, you would just need to activate the *formula mode* by entering the equal sign (`=`

) key, then type `=14*12 + 5`

, and finally validate that expression by using the `Enter`

key, or by blurring the field.

Note

If the math expression is invalid, the previous `rawValue`

is set back

Warning

By default, this behavior is *disabled*.

Check here on how to enable it.

## Enable the formula mode

If you want to enable the math expression parsing, you need to set the `formulaMode`

option to `true`

:

If you want to cancel the math expression edition and exit the formula mode, hit the `Escape`

key at any time.
This will revert any changes made to the input content to the previous formatted value.

## How to enter a formula?

When the *formula mode* is enabled, you can enter the formula mode just by:

- Focusing on the AutoNumeric-managed input
- Type the
`=`

character - Then type a valid math formula
- Once happy with your formula, submit it by typing the
`Enter`

key

If your math formula is valid, then its result will be `set()`

and you'll automatically exit *formula mode*.

## Allowed characters in formula mode

Simple math expressions are allowed, which means you can use any numeric characters, the decimal point `.`

, as well as the following operators `+`

, `-`

, `*`

, `/`

, `(`

and `)`

.

Math precedence

Parentheses and operators precedence are respected as expected

This allows for evaluating the following math expressions examples without problems:

`8 * -12.46`

`22* (10 - 2)/1.5- -0.5`

`(4+1) * 2 - (104587.23 * 8 - (-7))`

## Formula mode events

On user validation, if the math expression syntax is invalid, the previous valid `rawValue`

is set back, and the `autoNumeric:invalidFormula`

event is sent.

When a valid math expression is accepted, then its result is `set()`

, and the `autoNumeric:validFormula`

event is sent.