ng-message validation based on other input field in angularJs

Standard

Recently I faced an requirement where I have to plugin ng-message validation which depends on value of other input field means if value of field A is given then only field B is mandatory. For example, if user is providing phone no then email is not mandatory else email is mandatory.

Yes we can achieve this in a very simple and straight forward way. Lets see how.

Goal: Using ng-messages validation depending upon the value of other field

Approach:

ng-messages validation simple works with html5 validation rules like required

so if we can manipulate required tag at run time depending upon our condition then we can simple switch ng-message validation ON/OFF from that field.

lets see an example:

in my case if user provide his/her phone number then his/her email is not required and even we will not show the email field.


<form name="userform">

<div id="phoneDiv">
  <label>Enter phone no:</lable>
  <input type="text" name="phoneno" ng-model="form.phoneNo" />
</div>
<div id="emailDiv" ng-show="!form.phoneNo">

  <label>Enter email id:</lable>
  <input ng-required="!form.phoneNo" type="text" name="emailid" ng-model="form.emailId" />

  <div role="alert" ng-messages="userform.emailid.$error">

    <div ng-message="required">
      email id is required if phone no is not given.
    </div>
  </div>
</div>

</form>

Result:

Above approach can help us to achieve our goal.

Working example can be found here.

Cheers!

Happy Learning.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s