The Magento application provides various ways to validate your form inputs. In this article, I will show you how to validate forms in Magento 2, using javascript.
To add validation to your form you need initiating validation
There are several ways to initiate form validation:
- Using the data-mage-init attribute
<form id="my-form" data-mage-init='{"validation": {}}'> ... </form>
- Using the text/x-magento-init script type tag
<script type="text/x-magento-init"> { "#my-form": { "validation": {} } } </script>
To apply validation rules to your input fields
In Your custom form you can set validation rule for your field by using one of the following methods listed here:
- Method #1: Use “data-validate” attribute
<input id="field-name" type="text" data-validate='{"required":true}'/
- Method #2: Use rule name as an attribute
<input id="field-1" ... required="true"/>
- Method #3: Use rule name as class name
<input id="field-1" ... class="input-text required-entry"/>
- Method #4: Set rule in data-mage-init attribute of form tag
<form ... data-mage-init='{"validation": {"rules": {"field-1": {"required":true}}}}'> ... </form>
List of some form validation rules
- validate-password
- alphanumeric
- letters-only
- no-whitespace
- max-words
- validate-email
- validate-url
- validate-digits
- validate-range
- validate-identifier
- letters-only
- alphanumeric
- No-whitespace
- phoneUS
- phoneUK
- etc,...
You can check these all validation logic in the file: lib/web/mage/validation.js
Example
We create a custom form and add validation for the form field. In this form we used the “data-mage-init” attribute to initiate validation for the form.
<form class="form" id="custom-form" method="post" autocomplete="off" data-mage-init='{"validation": {}}'> <fieldset class="fieldset"> <legend class="legend"> <span>Form Information</span> </legend> <div class="field required"> <label for="email_address" class="label"> <span>Email</span> </label> <div class="control"> <input type="email" name="email" id="email" value=" " title="Email" data-validate="{required:true, 'validate-email':true}"> </div> </div> <div class="field name required"> <label class="label" for="name"><span>Name</span></label> <div class="control"> <input name="name" id="field-2" title="Name" value="" class="input-text" type="text" data-validate="{required:true}"/> </div> </div> </fieldset> <div class="actions-toolbar"> <div class="primary"> <button type="submit" class="action submit primary" title="Submit"><span>Submit</span></button> </div> </div> </form>
So we have learned how to validate forms using javascript with library validation.js of Magento 2. Hopefully, this article can help you solve your problem.