2015-12-02 87 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

相關問題