2016-05-21 3 views
0

フォームが検証されると、自動的にフォームを送信しようとしています。

HTML

<form name="myForm" role="form" novalidate> 
     <div class="form-group"> 
      <select class="form-control" name="location" ng-model='calc.location1' required> 
       <option value=7>Location1</option> 
       <option value=9>Location2</option> 
       <option value=5>Location3</option> 
      </select> 
     </div> 
     <div class="form-group"> 
      <input class="form-control" type='number' name="Size" ng-model='calc.Size' placeholder="Sq ft" required> 
     </div> 
     <div class="form-group"> 
      <input class="form-control" type='number' name="units" ng-model='calc.units' placeholder="Units in kWH" required> 
     </div> 
</form> 

コントローラー、私は私のフォームは、if文の内側にコードを提出挿入したいのですが、newValueは常にフォームの入力が空の場合であっても、真見せている

myapp.controller('demoController', ['$scope', function($scope, $document) { 
    $scope.$watch('myForm.units.$valid', function (newValue, oldvalue){ 
     if(newValue) { 
      console.log(newValue); 
     } 
    })  
}]) 

ページ読み込み時。

http://jsfiddle.net/cmyworld/EdCEW/のようなことをしようとしていますが、どこが間違っているのかわかりません。

+0

フィドルが私のために正常に動作例です。 'model.name'にデフォルト値を設定すると、 'Model is Valid'というメッセージが表示され、' mode.name'が空の場合、警告が表示されない、または何か不足していますか? –

+0

また、 'myForm。$ valid'を使ってすべてのバリデーションをチェックしたいかもしれません。 –

+0

Fiddleはうまくいきますが、実際のアプリケーションでは動作していません.NewValueは常にtrueです。 1つの検証ですべての検証を試してみました。 – simba777

答えて

0

解決策は、すべてのフィールドが有効である場合、すべてのフィールドを検証し、有効範囲変数をtrueに設定する1つのメソッドを作成することです。

var app = angular.module('myApp', []); 
app.controller('myController',['$scope',function($scope) { 
$scope.checked = 0; 
$scope.$watch('myForm.$valid', function (newValue, oldvalue){ 
$scope.checkDirty(); 

    if($scope.checked === 1) 
    {   alert('Model is valid'); 
      //Can do a ajax model submit. 
     } 

    }); 
    $scope.checkDirty = function(){ 

    if($scope.myForm.Size.$valid && $scope.myForm.units.$valid) 
     { 
      $scope.checked = 1; 
     } 
     else 
     { 
      $scope.checked =0; 
     } 
}; 
}]); 

はここhttp://jsfiddle.net/EdCEW/92/

+0

それは多くの助けになります、ありがとう。このようなことをしようとしていた。今アラートは入力単位フィールドに1桁の数字が入力された瞬間と呼ばれます。 ng-minlengthを使用してみましたが、minlengthに達するとアラートがトリガーされます。どのような方法でも、ユーザーはデータの入力を完了できます(長さは問わず)。その後、アラートが呼び出されますか? Im考えてタイムアウト – simba777

+0

はい、その状況でタイムアウトは良い選択です –

関連する問題