javascript - 使用 $.each 进行表单验证

标签 javascript jquery angularjs validation

这是我的表单验证代码。这里 alert("validation done") 应该在验证每个输入后显示。但是它会返回每个输入。这里有什么问题吗?

var app=angular.module('myApp',[])
app.controller('myController',function($scope){
$scope.clickMe = function(){
debugger
   $form = $('#myForm');
        $form.find('div input.required').each(function () {debugger
            var $this = $(this)
            if ($this.val().trim() == '') {
                $(this).css('border', '1px solid red');
                return false;
            }
            return true;
        })
        
        alert("validation done")
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myController">
<form id="myForm" >
<div>
  <input type="text" class="required">
  <input type="date" class="required">
  <select class="required">
  <option>AAA</option>
  <option>BBB</option>
  </select>
</div>
</form>
<button ng-click="clickMe()">submit</button>
</div>

最佳答案

Here alert("validation done") should be displayed after validation of every inputs.

在这种情况下

  • 警报应位于each循环内
  • $('#myFrom'); 应更改为 $('#myForm');
  • 删除 if 内的 return false

演示

var app = angular.module('myApp', [])
app.controller('myController', function($scope) {
  $scope.clickMe = function() {
    $form = $('#myForm');
    var isValid = true;
    $form.find('div input.required').each(function() {
      var $this = $(this)
      if ($this.val().trim() == '') {
        $(this).css('border', '1px solid red');
        isValid = false;
      }
      if (isValid) {
        alert("validation done"); //notice the change in placement of this alert
      }
      return true;
    })
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myController">
  <form id="myForm">
    <div>
      <input type="text" class="required">
      <input type="date" class="required">
      <select class="required">
  <option>AAA</option>
  <option>BBB</option>
  </select>
    </div>
  </form>
  <button ng-click="clickMe()">submit</button>
</div>

关于javascript - 使用 $.each 进行表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47528170/

相关文章:

angularjs - AngularJS 中的每次模型更改后是否会触发 ng-show 中的表达式?

angularjs - Cordova/Phonegap Google Maps Plugin 上标记图标的本地镜像

javascript - 使用 Jquery 更改悬停为单击功能

jquery - 如何在jquery中改变下拉框的颜色

javascript - $routeProvider 中的 AngularJS 调用方法

javascript - IE 9/10/11 在某个未知阈值后不渲染图像

当元素进入视口(viewport)时,JavaScript/jQuery 添加类?

javascript - 如何正确获取元素的id?

php - AJAX 是否占用了我的 CPU 资源?

javascript - Chrome 速度追踪器是否只允许在开发人员的构建中使用?