Reputation: 53
I have a form with radiobuttons and an input field. If any of the three top radio buttons are checked I need to add "required" to the input field. My code:
<ng-form name="addShareholderForm">
<form name="form.addForm" class="form-validation" ng-submit=" $ctrl.addShareholder()" ng-init="$ctrl.setFormScope(this)">
<md-radio-group ng-model="data.group1" ng-required="true">
<md-radio-button value="passport" class="md-primary">Passport number</md-radio-button>
<md-radio-button value="ssn">Social security number(SSN) </md-radio-button>
<md-radio-button value="drivers-license">Drivers license number</md-radio-button>
<md-radio-button value="person-other">Other</md-radio-button>
</md-radio-group>
<input placeholder="Type number" ng-required="data.group1 == 'passport' || data.group1 == 'ssn' || data.group1 == 'drivers-license'">
<md-input-container>
<md-button type="submit" ng-disabled="!addShareholderForm.$valid" class="md-raised md-primary md-no-ink submitshareholder" aria-label="Lägg till">
<i class="material-icons done-button-fab">add_circle</i>Lägg till
</md-button>
</md-input-container>
However this is not working and I don't know what I'm doing wrong? The input field is not set to required.
EDIT: I changed the code according to suggestions below and added the ng-form and the button to the code. The button is supposed to be disabled when the form is invalid but i´t is enabled as soon as I check a radio button without filling out the input.
Upvotes: 0
Views: 1146
Reputation: 24874
You just commited two mistakes:
1st.: In type attribute of your input, it should be type="number"
, since type="string"
isn't even valid.
2nd.: You forgot to add ng-model
in your input
tag.
Then, just change this:
<input type="string" min="1" max="40" placeholder="Type number" ng-required="data.group1 == 'passport' || data.group1 == 'ssn' || data.group1 == 'drivers-license'">
for:
<input ng-model"input" type="number" min="1" max="40" placeholder="Type number" ng-required="data.group1 == 'passport' || data.group1 == 'ssn' || data.group1 == 'drivers-license'">
Upvotes: 1
Reputation: 53
I finally solved the problem. I forgot to add $ctrl
<input placeholder="Type number" ng-required="$ctrl.data.group1 == 'passport' || $ctrl.data.group1 == 'ssn' || $ctrl.data.group1 == 'drivers-license'"/>
Upvotes: 0
Reputation: 18513
Your radio buttons should not all have ng-model
s. Here is an example of how to use md-radio
https://material.angularjs.org/latest/demo/radioButton
<md-radio-group ng-model="data.group1" ng-required="true">
<md-radio-button value="passport" class="md-primary" pidentifier-check>Passport number</md-radio-button>
<md-radio-button value="ssn" pidentifier-check>Social security number(SSN)</md-radio-button>
<md-radio-button value="drivers-license">Drivers license number</md-radio-button>
<md-radio-button value="person-other">Other</md-radio-button>
</md-radio-group>
<input type="string" min="1" max="40" placeholder="Type number" ng-required="data.group1 == 'passport' || data.group1 == 'ssn' || data.group1 == 'drivers-license'"/>
Upvotes: 1