javascript - 仅当用户单击某个字段后,AngularJS Material 才会将必填字段变为红色

标签 javascript angularjs material-design angular-material

我有这个标记:

<md-input-container class="md-block" flex-gt-sm ng-show="$ctrl.isAddMode">
    <label>ID</label>
    <input name="id" ng-model="$ctrl.voice.id"
           ng-model-options="{ debounce: 1000 }"
           ng-change="$ctrl.verifyUniqueId()" required>
    <div class='error' ng-show='$ctrl.idError'>
        {{$ctrl.idError}}
    </div>
</md-input-container>
<md-input-container class="md-block" flex-gt-sm>
    <label>Name</label>
    <input ng-model="$ctrl.voice.name" required>
</md-input-container>

<md-button ng-disabled="!$ctrl.isReadyForSubmit()"
           class="md-raised md-primary"
           ng-click="$ctrl.submit()">
    {{$ctrl.voice.isTest ? "Start Test" : "Publish"}}
</md-button>

与:

self.isReadyForSubmit = function () {
    return $scope.voiceForm.$valid && !uploadService.getClientErrorMsgOfUploadedFiles();
}

如果用户单击该字段,然后退出并且未填写该字段,则我的 txt 会变成红色。

enter image description here

但是,用户未点击的字段不会将其文本变成红色。

如果用户单击“提交”禁用按钮,如何将它们设为红色?

最佳答案

欢迎来到有 Angular Material 限制的世界。看看这个code pen demo我创造了。如果字段无效并且按下了提交,您需要在 md-input-container 元素上手动设置 css 类 md-input-invalid

<form name="projectForm">
    <md-input-container class="md-block" ng-class="{ 'md-input-invalid': projectForm.description.$invalid  && wasSend }">
        <label>Description</label>
        <input md-maxlength="30" required md-no-asterisk="" name="description" ng-model="project.description">
        <div ng-messages="projectForm.description.$error">
            <div ng-message="required">This is required.</div>
            <div ng-message="md-maxlength">The description must be less than 30 characters long.</div>
        </div>
    </md-input-container>

    <div layout="row">
        <md-input-container flex="50" ng-class="{ 'md-input-invalid': projectForm.clientName.$invalid && wasSend }">
            <label>Client Name*</label>
            <input name="clientName" required ng-model="project.clientName">
            <div ng-messages="projectForm.clientName.$error">
                <div ng-message="required">This is required.</div>
            </div>
        </md-input-container>
    <div>
        <md-button type="submit" ng-click="wasSend = true">Submit</md-button>
    </div>
</form>

关于javascript - 仅当用户单击某个字段后,AngularJS Material 才会将必填字段变为红色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43167465/

相关文章:

javascript - 如何比较两个 JS 数组并使用更改创建新的 JS 数组

javascript - 无法加载资源 : the server responded with a status of 404 (Not Found) https://websitename. herokuapp.com/js/bootstrap.js

javascript - 如何在不调用 Protractor 中的后端服务的情况下测试登录页面?

javascript - Angular 模态未显示

java - 在 selenium 测试中遇到 ng 选择框的问题

javascript - 如何合并 ng-message 消息

用于字体图标的 ios 动态 unicode NSString

javascript - 按下按钮时 polymer 纸对话框不会隐藏

html - 减少或删除 MDL 文本字段的垂直填充

javascript - 日期在 IE 浏览器中显示无效,但适用于 chrome 和 Firefox