繁体   English   中英

提交时进行角度验证

[英]Angular validation on submit

我正在尝试创建一个表单,如果您不填写任何字段,则在您单击“提交”时将显示警报消息。 我正在尝试使用角度验证来实现这一目标; 但是,它根本不起作用。 这是我目前拥有的代码:

(1)HTML事件表单文件

  function mainController($scope, $http) { $scope.formData = {}; $http.get('/api/events') .success(function(data) { $scope.events = data; initMap(data); for(i = 0; i < data.length; i++){ console.log(data[i].eventLocation); //placeMarker(data[i]); //test(data); } //placeMarker(data); }) .error(function(data) { console.log('Error: ' + data); }); // when submitting the add form, send the text to the node API $scope.createEvent = function() { $http.post('/api/events', $scope.formData) .success(function(data) { $scope.formData = {}; // clear the form so our user is ready to enter another $scope.events = data; console.log(data); }) .error(function(data) { console.log('Error: ' + data); }); } // ATTEMPT AT FORM VALIDATION $scope.validateForm = function() { if (document.getElementById("inputName").value == "" || document.getElementById("inputType").value == "" || document.getElementById("inputLocation").value == "" || document.getElementById("inputDetails").value == "") { alert("Please fill in all required fields!"); return false; } } }; 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div class="col-lg-6"> <!-- Validate form --> <form name="myForm" onsubmit="return validateForm()"> <div class="form-group"> <label>Event Name</label> <input type="text" name="inputName" class="form-control" ng-model="formData.eventName" placeholder="Event name"> </div> <div class="form-group"> <label>Type</label> <select class="form-control" id="inputType" ng-model="formData.eventType"> <option>Option 1</option> <option>Option 2</option> <option>Option 3</option> <option>Option 4</option> </select> </div> <div class="form-group"> <label>Location</label> <select class="form-control" id="inputLocation" ng-model="formData.eventLocation"> <option>Location 1</option> <option>Location 2</option> <option>Location 3</option> </select> </div> <div class="form-group"> <label>Event Details</label> <textarea class="form-control" name="inputDetails" ng-model="formData.eventDetails" rows="2" placeholder="Add details about your event"></textarea> </div> <div class="text-center"> <button id="add-event"type="submit" class="btn btn-primary" ng-click="createEvent()">Submit</button> </div> </form> 

用angularjs的方式。 https://scotch.io/tutorials/angularjs-form-validation

 angular.module('exApp', []) .controller('ctrl', ['$scope', function($scope) { $scope.save = function(invalid){ if(!invalid){console.log('Form Submitted');} } }]); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> <body ng-app="exApp" ng-controller="ctrl"> <div> <form name="form" class="css-form" novalidate> <label>Name: <input type="text" ng-model="name" name="userName" required="" /> </label> <br /> <div ng-show="form.$submitted || form.userName.$touched"> <div ng-show="form.userName.$error.required">Tell us your name.</div> </div> <label>E-mail: <input type="email" ng-model="email" name="userEmail" required="" /> </label> <br /> <div ng-show="form.$submitted || form.userEmail.$touched"> <span ng-show="form.userEmail.$error.required">Tell us your email.</span> <span ng-show="form.userEmail.$error.email">This is not a valid email.</span> </div> Gender: <label><input type="radio" ng-model="gender" value="male" />male</label> <label><input type="radio" ng-model="gender" value="female" />female</label> <br /> <label> <input type="checkbox" ng-model="agree" name="userAgree" required="" /> I agree: </label> <input ng-show="agree" type="text" ng-model="agreeMe" required="" /> <br /> <div ng-show="form.$submitted || form.userAgree.$touched"> <div ng-show="!agree || !agreeMe">Please agree and sign.</div> </div> <input type="button" value="Reset" /> <input type="submit" value="Save" ng-disabled="form.$invalid || form.$pristine" ng-click="save(form.$invalid)" /> </form> </div> 

您可以使用ng-submit进行表单验证

<form name="myForm" ng-submit="validateForm()">

为了进行验证,请使用ng-model变量来验证表单

$scope.validateForm = function() { 
    if (!$scope.formData.eventName || !$scope.formData.eventType  ) {
      alert("Please fill in all required fields!");
      return false;

  }

演示版

使用表单时,Angular提供了一些帮助。 它为表单提供了不同的对象。 它们在验证表单时非常有帮助:

  • $ pristine:如果用户尚未与表单交互,则为true
  • $ dirty:如果用户与表单进行了交互,则为true
  • $ valid:如果所有控件均有效,则为true
  • $ invalid:如果至少一个控件无效,则为true
  • $ error:它包含对所有无效控件的引用

您可以通过表单对象(在本例中为myForm)使用此对象。 因此,您可以使用以下命令检查用户是否填写了任何字段:

$scope.validateForm = function(myForm) {
  if(myForm.$pristine) {
    alert("Please fill in all required fields!");
  }
}

尝试这个 :

  • 使用myForm.$valid条件将ng-submit添加到您的元素中。
  • 在提交按钮上添加一个ng-click="submitted=true"事件,该事件将在单击提交按钮时触发。
  • 在所有输入字段或必填字段中添加required属性。

演示

 var myApp = angular.module('myApp',[]); myApp.controller('MyCtrl', function($scope) { $scope.validateForm = function() { alert("submitting"); }; }); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="myApp" ng-controller="MyCtrl"> <form name="myForm" ng-submit="myForm.$valid && validateForm()" novalidate> <p ng-show="submitted==true && myForm.inputName.$invalid">Event name is missing.</p> <p ng-show="submitted==true && myForm.inputType.$invalid">Event type is missing.</p> <p ng-show="submitted==true && myForm.inputLocation.$invalid">Event Location is missing.</p> <p ng-show="submitted==true && myForm.inputDetails.$invalid">Event details is missing.</p> <div class="form-group"> <label>Event Name</label> <input type="text" name="inputName" class="form-control" ng-model="formData.eventName" required placeholder="Event name"> </div> <div class="form-group"> <label>Type</label> <select class="form-control" name="inputType" id="inputType" ng-model="formData.eventType" required> <option>Option 1</option> <option>Option 2</option> <option>Option 3</option> <option>Option 4</option> </select> </div> <div class="form-group"> <label>Location</label> <select class="form-control" name="inputLocation" id="inputLocation" ng-model="formData.eventLocation" required> <option>Location 1</option> <option>Location 2</option> <option>Location 3</option> </select> </div> <div class="form-group"> <label>Event Details</label> <textarea class="form-control" name="inputDetails" ng-model="formData.eventDetails" rows="2" placeholder="Add details about your event" required></textarea> </div> <div class="text-center"> <button id="add-event"type="submit" class="btn btn-primary" ng-click="submitted=true">Submit</button> </div> </form> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM