gpt4 book ai didi

angularjs - 如何使用 ng-messages 显示 Checkbox set 和 Radio set 的错误消息?

转载 作者:行者123 更新时间:2023-12-03 14:19:14 25 4
gpt4 key购买 nike

我一直在尝试验证 Checkbox set 和 Radio set 并使用 ng-messages 指令显示错误消息,但它没有按预期工作。 ng-messages 根本不显示错误消息。我正在使用 html 文件填充错误消息。在错误解决之前,我的表单中的提交按钮将被禁用。

在以下情况下,如何显示复选框集和单选集的错误消息:

  • Radio set 中没有选择一个选项?
  • Checkbox set 中至少有一个选项没有被选中?
  • 缩放 Checkbox 集的检查,以便我们可以检查至少 2 个或更多被选中,等等?

  • 这是我的表格:
    <form name="userForm" ng-submit="submitForm()" novalidate>
    <div class="form-group" ng-class="{ 'has-error' : userForm.subscribe.$invalid && !userForm.subscribe.$touched }">
    <label class="checkbox-inline">
    <input type="checkbox" id="subscribe1" value="option1" name="subscribe[]" ng-model="user.subscribe" required> 1
    </label>
    <label class="checkbox-inline">
    <input type="checkbox" id="subscribe2" value="option2" name="subscribe[]" ng-model="user.subscribe" required> 2
    </label>
    <label class="checkbox-inline">
    <input type="checkbox" id="subscribe3" value="option3" name="subscribe[]" ng-model="user.subscribe" required> 3
    </label>

    <div class="help-block" ng-messages="userForm.subscribe.$error" ng-show="userForm.subscribe.$invalid">
    <div ng-messages-include="home/messages.html"></div>
    </div>
    </div>

    <div class="form-group" ng-class="{ 'has-error' : userForm.gender.$invalid && !userForm.gender.$touched }">
    <div class="radio">
    <label>
    <input type="radio" name="gender" value="male" ng-model="user.gender" />
    male
    </label>
    </div>
    <div class="radio">
    <label>
    <input type="radio" name="gender" value="female" ng-model="user.gender" />
    female
    </label>
    </div>

    <div class="help-block" ng-messages="userForm.gender.$error" ng-show="userForm.gender.$invalid">
    <div ng-messages-include="home/messages.html"></div>
    </div>
    </div>
    <button type="submit" class="btn btn-primary btn-success " ng-disabled="userForm.$invalid">Submit</button>
    </form>

    messages.html
    <span ng-message="required">This field is required</span>
    <span ng-message="minlength">This field is too short</span>
    <span ng-message="maxlength">This field is too long</span>
    <span ng-message="required">This field is required</span>
    <span ng-message="email">This needs to be a valid email</span>

    Controller .js
    angular.module('myApp', ['ngRoute', 'ngAnimate', 'ngMessages']);

    angular
    .module('myApp')
    .controller('HomeCtrl', HomeCtrl);

    HomeCtrl.$inject = ['$scope'];

    function HomeCtrl($scope) {
    $scope.userForm = {};
    }

    付款复选框集:
    <div class="form-group" ng-class="{ 'has-error' : userForm.payment.$invalid && userForm.payment.$touched }">
    <label class="checkbox-inline">
    <input type="checkbox" id="payment1" value="Visa" name="payment" ng-blur="doTouched()" ng-model="user.payment[1]" ng-required="!someSelected(user.payment)"> Visa
    </label>
    <label class="checkbox-inline">
    <input type="checkbox" id="payment2" value="Mastercard" name="payment" ng-blur="doTouched()" ng-model="user.payment[2]" ng-required="!someSelected(user.payment)"> Mastercard
    </label>
    <label class="checkbox-inline">
    <input type="checkbox" id="payment3" value="Cash" name="payment" ng-blur="doTouched()" ng-model="user.payment[3]" ng-required="!someSelected(user.payment)"> Cash
    </label>

    <div class="help-block" ng-messages="userForm.payment.$error" ng-show="userForm.payment.$invalid && userForm.payment.$touched">
    <div ng-messages-include="home/messages.html"></div>
    </div>
    </div>

    最佳答案

    检查此示例:

    http://plnkr.co/edit/2w0lIf?p=preview

    复选框列表使用 ng-required带有 someSelected 的指令检查是否至少选择了一项的函数(在 Controller 中定义):

    <div class="form-group" ng-class="{ 'has-error' : userForm.subscribe.$invalid && userForm.subscribe.$touched }">
    <label class="checkbox-inline">
    <input type="checkbox" id="subscribe1" value="option1" name="subscribe" ng-blur="doTouched()" ng-model="user.subscribe[1]" ng-required="!someSelected(user.subscribe)"> 1
    </label>
    <label class="checkbox-inline">
    <input type="checkbox" id="subscribe2" value="option2" name="subscribe" ng-blur="doTouched()" ng-model="user.subscribe[2]" ng-required="!someSelected(user.subscribe)"> 2
    </label>
    <label class="checkbox-inline">
    <input type="checkbox" id="subscribe3" value="option3" name="subscribe" ng-blur="doTouched()" ng-model="user.subscribe[3]" ng-required="!someSelected(user.subscribe)"> 3
    </label>

    <div class="help-block" ng-messages="userForm.subscribe.$error" ng-show="userForm.subscribe.$invalid && userForm.subscribe.$touched">
    <div ng-messages-include="messages.html"></div>
    </div>
    </div>

    选项按钮组更容易使用 ng-required条件为 !user.gender 的指令:
    <div class="form-group" ng-class="{ 'has-error' : userForm.gender.$invalid && userForm.gender.$touched }">
    <div class="radio">
    <label>
    <input type="radio" name="gender" value="male" ng-model="user.gender" ng-required="!user.gender"/>
    male
    </label>
    </div>
    <div class="radio">
    <label>
    <input type="radio" name="gender" value="female" ng-model="user.gender" ng-required="!user.gender"/>
    female
    </label>
    </div>

    <div class="help-block" ng-messages="userForm.gender.$error" ng-if="userForm.gender.$touched">
    <div ng-messages-include="messages.html"></div>
    </div>
    </div>
    ngBlur指令解决了复选框列表只有在列表中的所有项目都被模糊时才会“触摸”的问题,调用 doTouched() 函数::
      $scope.doTouched = function() {
    $scope.userForm.subscribe.$setTouched();
    }

    附言注意正确的名称: userForm<form> 的 HTML 名称, user是绑定(bind)表单的模型的名称。

    关于angularjs - 如何使用 ng-messages 显示 Checkbox set 和 Radio set 的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34917981/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com