【问题标题】:Change text color to red for all the labels and show red border for all invalid fields after submitting form angularjs将所有标签的文本颜色更改为红色,并在提交表单 angularjs 后为所有无效字段显示红色边框
【发布时间】:2014-05-26 02:16:50
【问题描述】:

我有一个表单,它有几个文本区域和引导 UI 星级及其标签文本。我已将所有文本区域和星级评分设置为必填字段。

当我单击提交按钮时,我想将文本区域 ()/星级 () 的所有标签文本(即 )更改为红色字体,并在所有无效字段的文本区域周围设置红色边框。以下是我的代码,它不起作用。

当我点击保存按钮而不输入任何内容时,我希望发生以下情况。你能告诉我如何实现这 3 个项目吗?

  1. 将无效文本区域周围的边框更改为红色
  2. 将无效文本区域标签的字体颜色更改为红色
  3. 将无效星级(如果用户未选择至少 1 个星级)评级标签的正面颜色更改为红色。

提前感谢您的帮助。

这里是html:

        <div class="row">
            <div class="col-lg-7 col-md-12">
                <form name="addReviewForm" class="addReview-form" role="addReviewForm" ng-class="{submitted:addReviewForm.submitted}">
                    <div class="form-group">
                        <label for="reviewTitle">Review Title:</label>
                        <br />
                        <textarea ng-model="review.title" id="reviewTitle" class="form-control" name="reviewTitle" rows="3" placeholder="Write your review title here" required></textarea>
                    </div>

                    <div class="form-group">
                        <label>Review:</label>
                        <textarea ng-model="review.comments" class="form-control" name="comments" rows="3" placeholder="Write your review here" required></textarea>
                    </div>
                </form>
            </div>
            <div class="col-lg-5 col-md-12">
                <dl class="dl-horizontal">
                    <dt>On time deliver:</dt>
                    <dd>
                        <rating value="review.Time" max="max" readonly="false" rating-states="ratingStates" name="onTime" required></rating>
                    </dd>
                    <dt>Customer service:</dt>
                    <dd>
                        <rating value="review.CustomerService" max="max" readonly="false" rating-states="ratingStates" name="customerService" required></rating>
                    </dd>
            </div>
        </div>

这是单击“保存”按钮时调用的函数:

$scope.addReview = function (review) {
    if ($scope.addReviewForm.$valid) {
        //submit as normal

    }
    else {
        $scope.addReviewForm.submitted = true;
    }
}

这是我的 CSS:

addReviewForm.submitted .ng-dirty.ng-invalid{ 
    border: 1px solid red; 
} 
addReviewForm.submitted .ng-dirty.ng-valid{
     border: 1px solid green; 

}

【问题讨论】:

    标签: forms angularjs css validation


    【解决方案1】:

    这是一个fiddle,按照您的描述进行以下工作

    提交按钮:(这将设置提交为真)

    <button type="submit" ng-click="submitted=true">Submit Button</button>
    

    HTML:(使用ng-class判断字段是否脏有效)

    <div ng-app class="row" ng-init="review = {title: 'abc'}">
        <div class="col-lg-7 col-md-12">
            <form name="addReviewForm" class="addReview-form" role="addReviewForm" ng-class="{submitted:submitted}">
                <div class="form-group" ng-class="{'show-valid': (addReviewForm.reviewTitle.$valid && addReviewForm.reviewTitle.$dirty), 'show-invalid': (addReviewForm.reviewTitle.$invalid && addReviewForm.reviewTitle.$dirty)}">
                    <label for="reviewTitle">Review Title:</label>
                    <br />
                    <textarea ng-model="review.title" id="reviewTitle" class="form-control" name="reviewTitle" rows="3" placeholder="Write your review title here" required></textarea>
                </div>
                <button type="submit" ng-click="submitted=true">Submit Button</button>
            </form>
        </div>
    </div>
    

    CSS:(控制显示的样式)

    .submitted .show-invalid textarea, .submitted .show-invalid input, .submitted .show-invalid select {
        border: 1px solid red;
    }
    .submitted .show-valid textarea, .submitted .show-valid input, .submitted .show-valid select {
        border: 1px solid green;
    }
    

    【讨论】:

    • 感谢 Brocco,但您的示例并未将文本区域标签的文本颜色更改为红色。我从jsfiddle.net/thomporter/ANxmv/2 中找到了一个示例,它可以做到这一点,但我无法让我的工作。我把上面html中的th3第4行代码修改为下面的代码,还是不行。我错过了什么吗?
    • 我在 .form-group 级别应用了 CSS 类,因此您可以适当地设置内部任何元素的样式,因此,如果您想做标签,您可以这样做: .submitted .show-invalid label {红色; }
    • 我添加了提交的 .show-invalid label { color: red; },但标签的字体没有变成红色。我在想这是因为标签不是“无效的”。如果这是真的,当文本区域无效时,如何将文本区域的标签字体变为红色?另外,在我原来的问题中,我还需要将 (星级)的 cont 颜色更改为红色。我在 中添加了 'required,但如果我没有选择星级/评级,它不会将评级变为无效。如何使评级成为必需并将星级评级的标签设置为红色字体颜色?谢谢!
    • @user3439326 : 当输入元素无效时,您可以在哪里更改标签的字体颜色?
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签