【问题标题】:Validate a form using Angular-material使用 Angular-material 验证表单
【发布时间】:2016-09-19 04:55:45
【问题描述】:

如何使用 Angular-material 验证表单,我需要两个功能: 1) 点击提交时,如果必填字段为空,则显示错误消息。 2)如果表单字段无效,请不要发送发布请求(避免提交)。 下一个代码避免提交,但在单击时不显示错误消息,仅在光标离开每个输入字段时显示。

 <form name="userForm">
<md-input-container>
    <input name="email" placeholder="Email" data-ng-model="vm.registerUserData.email" required />
    <div ng-messages="userForm.email.$error" ng-if='userForm.myControl.$dirty'>
      <div ng-message="required">This is required!</div>
    </div>
</md-input-container>

<md-input-container>
    <input name="Password" placeholder="Password" data-ng-model="vm.registerUserData.password" required />
     <div ng-messages="userForm.Password.$error">
     <div ng-message="required">This is required!</div>
     </div>
 </md-input-container>                             

 <md-input-container>
    <md-button id="registerUser" value="Register" class="md-raised md-primary" ng-click="userForm.$valid &&  vm.registerUser()" aria-label="login" ng-disabled="login.loginForm.$invalid()">
      Create
     </md-button>
</md-input-container>
 </form>

【问题讨论】:

    标签: angularjs angular-material


    【解决方案1】:

    你错过了两件事。

    首先:type="submit" 添加到您的md-button 元素中。

    第二:novalidate添加到您的form元素中:

    请注意,novalidate 用于禁用浏览器的原生表单验证。

    您还应该考虑在form 元素上使用ng-submit,而不是在按钮上使用ng-click

    <form name="userForm" novalidate ng-submit="userForm.$valid &&  vm.registerUser()">
        <md-input-container>
            <input name="email" placeholder="Email" data-ng-model="vm.registerUserData.email" required />
            <div ng-messages="userForm.email.$error" ng-if='userForm.myControl.$dirty'>
                <div ng-message="required">This is required!</div>
            </div>
        </md-input-container>
    
        <md-input-container>
            <input name="Password" placeholder="Password" data-ng-model="vm.registerUserData.password" required />
            <div ng-messages="userForm.Password.$error">
                <div ng-message="required">This is required!</div>
            </div>
        </md-input-container>                             
    
        <md-input-container>
            <md-button type="submit" id="registerUser" value="Register" class="md-raised md-primary" aria-label="login" ng-disabled="login.loginForm.$invalid()">
                Create
            </md-button>
        </md-input-container>
    </form>
    

    【讨论】:

    • 感谢 Jhon,它运行良好。还有一件事,您知道如何在我开始输入输入字段后立即隐藏/清除错误消息吗?
    • 尝试将ngMessages也直接添加到您的模块中。
    猜你喜欢
    • 2018-02-20
    • 2015-08-22
    • 2019-04-08
    • 2016-07-26
    • 1970-01-01
    • 2018-01-11
    • 2016-07-30
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多