How can I get the value of the checked radio button when submitting a form using angularjs?

前端 未结 4 737
没有蜡笔的小新
没有蜡笔的小新 2020-12-06 11:37

I have a few forms. Each form have a few possible radio buttons and a submit button. Only one radio button can be checked (using the same name attribute for each radio). How

相关标签:
4条回答
  • 2020-12-06 12:05

    Your radio button's value will be available on whatever scope property you've assigned ng-model="" to on the input element. Try something like this:

    JS

    app.controller('MyCtrl', function($scope){ 
       $scope.submitForm = function (){
           alert($scope.radioValue):
       };
    
       $scope.radioValue = 1;
    });
    

    HTML

    <form name="myForm" ng-controller="MyCtrl" ng-submit="submitForm()">
       <label><input type="radio" name="test" ng-model="radioValue" value="1"/> One</label>
       <label><input type="radio" name="test" ng-model="radioValue" value="2"/> Two</label>
       <label><input type="radio" name="test" ng-model="radioValue" value="3"/> Three</label>
       <div>currently selected: {{radioValue}}</div>
       <button type="submit">Submit</button>
    </form>
    

    And, so you can see it working, here is a plunker demonstrating the example

    0 讨论(0)
  • 2020-12-06 12:07

    I faced this problem and found a really simple and clean solution. Here's what you should do.

    In your controller, make an empty object with any name("radioValue" in this case).

    In your HTML file, use same 'ng-model' for each radio button/input with same name as that of object joining 'name' attribute of each radio button(that too should be same for each button) separated by a period(.) as shown in code snippet.

    The Controller

    var radioValue={};
    ...
    ...
    console.log($scope.radiovalue) //use JSON.strinigify if naccessary
    

    The HTML File

        <input type="radio" name="somename" ng-model="radioValue.somename" value="1"/>
        <input type="radio" name="somename" ng-model="radioValue.somename" value="2"/>
        <input type="radio" name="somename" ng-model="radioValue.somename" value="3"/>
    //Don't forget to mention value attribute. ng-model does the work by identifying the radio-buttons/inputs by value attribute
    

    The Output you should expect

    {"somename":"1"} //if radio-button with value "1" is selected.
    
    0 讨论(0)
  • 2020-12-06 12:14

    just add $parent in ng-model .

    <form name="myForm" ng-submit="submitForm()">
           <label data-ng-repeat="i in [1,2,3]"><input type="radio" name="test" ng-model="$parent.radioValue" value="{{i}}"/>{{i}}</label>
           <div>currently selected: {{radioValue}}</div>
           <button type="submit">Submit</button>
        </form>
    
    0 讨论(0)
  • 2020-12-06 12:18

    Combination with ng-value

    app.controller('MyCtrl', function($scope){ 
       $scope.submitForm = function() {
          *****
       };
       $scope.radioBtn = {
        name: 'radioButton'
       };
    
       $scope.radioValueOne = {"id": "1", "value": "whatever you want"};
       $scope.radioValueTwo = {"id": "2", "value": "whatever you want"};
       $scope.radioValueThree = {"id": "3", "value": "whatever you want"};
    });
    
    <form name="myForm" ng-controller="MyCtrl" ng-submit="submitForm()">
       <label><input type="radio" name="test" ng-model="radioBtn.name" ng-value="radioValueOne"/> One</label>
       <label><input type="radio" name="test" ng-model="radioBtn.name" ng-value="radioValueTwo"/> Two</label>
       <label><input type="radio" name="test" ng-model="radioBtn.name" ng-value="radioValueThree"/> Three</label>
       <div>currently selected: {{radioBtn.name}}</div>
       <button type="submit">Submit</button>
    </form>
    
    0 讨论(0)
提交回复
热议问题