如何在提交之前选择单选按钮

问题描述 投票:10回答:2

我有一系列问题,可以选择收音机的答案。我不知道如何使用AngularJS验证来要求用户在单击“下一步”之前选择一个。下面是我的代码:

编辑:请注意,单击“下一步”将根据选择的内容从控制器获取下一个问题节点。它基本上是一个动态问卷。

<form novalidate>
   <div class="radio" ng-repeat="answer in node.Answers">
      <input type="radio" name="answerGroup" ng-model="$parent.selectedAnswer" 
         value="{{answer.BranchId}},{{node.LeafId}},{{answer.Id}}"/> {{answer.Text}} 
   </div>
   <div>
      <input type="button" ng-click="previous()" value="Previous"/>
      <input type="button" ng-click="next(selectedAnswer)" value="Next"/>
   </div>
</form>
javascript html angularjs angularjs-scope angularjs-ng-disabled
2个回答
13
投票

编辑: Here is a working fiddle

首先给表单命名,以便您可以引用它:

<form name="myForm" novalidate>

接下来将required属性添加到单选按钮:

<input type="radio" name="answerGroup" required
    ng-model="$parent.selectedAnswer"
    value="{{answer.BranchId}},{{node.LeafId}},{{answer.Id}}"/>

然后使用ng-disabled将您的next按钮的disabled属性绑定到单选按钮的有效性:

<input type="button" ng-click="next(selectedAnswer)" value="Next"
    ng-disabled="myform.answerGroup.$invalid" />

3
投票

下面看,使用ng-show显示错误消息应该都不单击两个单选按钮。

                          <label for="dateofbirth">
                            <span>Are you the primary cardholder?</span>
                            </label>
                            <ul>
                              <li>
                                <label for="yes">
                                  <input type="radio" id="yes" name="cardholder" ng-model="user.cardholder" value="yes" required/>
                                  Yes
                                </label>
                              </li>
                              <li>
                                <label for="no">
                                  <input type="radio" id="no" name="cardholder" ng-model="user.cardholder" value="no" required/>
                                  No
                                </label>
                              </li>
                            </ul>
                        </fieldset>
                        <span class="error" ng-show="myForm.cardholder.$error.required && submitted == true"><i class="fa fa-exclamation-circle"></i>Please select an answer.</span>
© www.soinside.com 2019 - 2024. All rights reserved.