# Validation

Client side validation is controlled by the `validator` key in all page elements.

```yaml
// Example
{
  "label": "Last Name",
  "model": "nameLast",
  "required": true,
  "styleClasses": "col-md-3",
  "type": "input",
  "fieldOptions": {
    "inputType": "text"
  },
  "validator": "string"
}
```

Validation **does not** run automatically. You must trigger client validation with the [validate action.](/reference/actions-processor/actions_overview/validate.md)

### **The validator key can be set to the following:**

**number** Checks that the value is numeric - and that it's within the fields min & max range, if these are defined in the schema. **integer** Checks that the value is a valid Javascript Number - and that it's an integer.

**double** Checks that the value is a valid number.

{% hint style="warning" %}
When validating with **number**, **integer**, or **double**, make sure `fieldOptions.inputType` is set to `number`, otherwise the field will be treated as a text-style input in the browser.
{% endhint %}

**string** Checks that the value is a string - and that its length is within the fields min & max range, if these are defined in the schema.

**array** Checks that the value is an array - and that the arrays length is within the fields min & max range, if these are defined in the schema. Expects the value to be a valid Javascript array literal - something like this: \["John", "Doe", "Jane"] or \[1, 2, 3].

**date** Checks that the value is a valid Javascript Date - and that the date is between the fields min and max dates, if these are defined in the schema.

**regexp** Checks that the value matches the regex defined in the fields schema.pattern. If schema.pattern isn't set, validation is skipped.

**email** Checks that the value is a plausible looking email address, using a regular expression.

**url** Checks that the value is a plausible looking http url, using a regular expression. Among other checks, the URL needs to start with http\:// or https\://.

**creditCard** Checks that the value is a valid credit card number, using code from here.

**alpha** Checks that the value is a letter, using this regex: /^\[a-zA-Z]\*$/

**alphaNumeric** Checks that the value is a letter or a number, using this regex: /^\[a-zA-Z0-9]\*$/

{% hint style="danger" %}
This validation works great as a user interface element, but should not be trusted in FileMaker. **Anything that comes from the a client's web browser can be hacked**, so sensitive data should also be validated in your FileMaker scripts before committing to the database.
{% endhint %}

Source: <https://icebob.gitbooks.io/vueformgenerator/content/validation/built-in-validators.html>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.klai.studio/reference/form-settings/validationoverview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
