2015-12-02 81 views
0

我有一个简单的表单,我需要验证。我怎样才能验证它没有按钮(提交)?在AngularJS中没有提交按钮的表单验证

<form name="myForm" novalidate> 
 
    <fieldset> 
 
     <legend>Info</legend> 
 
     <div> 
 
      <label for="name">Name:</label> 
 
      <input type="text" name="name" id="name" ng-model="myName" required/> 
 
     </div> 
 
     <div> 
 
      <label for="pass">Password:</label> 
 
      <input type="password" name="pass" id="pass" ng-model="myPass" required/> 
 
     </div> 
 
     <div> 
 
      <label for="email">Email:</label> 
 
      <input type="email" name="email" id="email" ng-model="myMail" required/> 
 
     </div> 
 
     <div> 
 
      <label for="birth">Date of birth:</label> 
 
      <input type="date" id="birth" name="birth" ng-model="date"/> 
 
     </div> 
 

 
    </fieldset> 
 
</form>

+0

您需要验证什么?通过?名称?电子邮件?也许你需要在输入模式。 – ryanyuyu

+0

如果您不想使用按钮 – DevelopmentIsMyPassion

+0

您的问题没有意义,您可以验证上次课本的lostfocus事件。在一些被删除的评论中,你建议你试图在没有提交按钮的情况下提交表单,但这不是你在问题主体中所要求的。至于验证,你已经在这些输入上已经验证了“required”,但是你没有描述你期望的结果。 – Claies

回答

0

默认情况下,当数据的变化(无论是从模型或基于用户直接输入),它不依赖于形成角提交表单验证会自动触发。您可以修改该事件的这个使用ng-model-options,如

<input ng-model-options="{ 
    updateOn: 'default blur', 
    debounce: { default: 500, blur: 0 } 
}" ...> 

如果您需要创建自己的自定义验证器,将它添加到ngModelController.$validators$asyncValidators,如触发:

<input type="text" name="name" id="name" ng-model="myName" validatename required/> 
app.directive('validatename', function() { 
    return { 
    require: 'ngModel', 
    link: function(scope, elm, attrs, ctrl) { 
     ctrl.$validators.validatename = function(modelValue, viewValue) { 
     if (ctrl.$isEmpty(modelValue)) { 
      return true; 
     } 

     if (viewValue === "Zuul") { 
      return true; 
     } 

     return false; // There is no Dana only Zuul 
     }; 
    } 
    }; 
}); 

我相信你也可以通过调用$validate()以编程方式触发验证,但这很少需要。

请参阅https://docs.angularjs.org/guide/forms

相关问题