angularjs 1.6.9 form.validate不是一个函数

时间:2018-04-11 07:47:48

标签: javascript angularjs

my angular-validate.js

(function (angular, $) {
angular.module('ngValidate', [])

    .directive('ngValidate', function () {
        return {
            require: 'form',
            restrict: 'A',
            scope: {
                ngValidate: '='
            },
            link: function (scope, element, attrs, form) {
                var validator = element.validate(scope.ngValidate);

                form.validate = function (options) {
                    var oldSettings = validator.settings;

                    validator.settings = $.extend(true, {}, validator.settings, options);

                    var valid = validator.form();

                    validator.settings = oldSettings; // Reset to old settings

                    return valid;
                };

                form.numberOfInvalids = function () {
                    return validator.numberOfInvalids();
                };
                //BY DK
                form.validator = validator;
                //BY DK //https://github.com/jpkleemans/angular-validate
            }
        };
    })

    .provider('$validator', function () {
        $.validator.setDefaults({
            onsubmit: false // to prevent validating twice
        });

        return {
            setDefaults: $.validator.setDefaults,
            addMethod: $.validator.addMethod,
            setDefaultMessages: function (messages) {
                angular.extend($.validator.messages, messages);
            },
            format: $.validator.format,
            $get: function () {
                return {};
            }
        };
    });
}(angular, jQuery));

我的模块

var adminDashbord = angular
.module('adminDashbord', ['ngValidate']);

我的控制器

 adminDashbord.controller('productmasterController', ['$scope', '$rootScope',
   function ($scope, $rootScope) {

  $scope.init = function () {
}
   $scope.productEditvalidation = { 
      rules: {
           productName: { required: true },
           bestSeller: { required: true },
      }

      messages: {
           productName: { required: 'Enter Product Name' },
           bestSeller: { required: ''Select Any One'' },
           }

$scope.updateProduct = function (form) {
       if (form.validate()) {
           // Form is valid!
           alert('valid!');

       }
   }
   }]);

我的Html

   <div class="card-body">
       <form  name="productEdit"  ng-submit="updateProduct(productEdit)" ng-validate="productEditvalidation" >
       <div class="row">
             <div class="col-md-6">
                  <div class="form-group">
                      <label class="control-label">Product Code </label>
                         <input type="text" name ="productCode" class="form-control" value="{{productCode}}" disabled />
                   </div>
               </div>
    <div class="col-md-6">
                                            <div class="form-group">
                                                <label>Best Seller</label>
                                                <br />
                                                <div class="custom-control custom-radio custom-control-inline">
                                                     <label class="" for="bestSeller">
                                                       <input type="radio" id="" name="bestSeller"  value="true" class="" ng-checked ="productbestseller == 'True' "/>Yes

                                                     </label>



                                                </div>
                                                <div class="custom-control custom-radio custom-control-inline">
                                                    <label class="" for="bestSeller">
                                                    <input type="radio" id="" name="bestSeller"   value="false" class="t"  ng-checked ="productbestseller == 'False'"/>No

                                                    </label>
                                                </div>
                                            </div>
                                        </div>
         </div>
    </form>
 </div>

我的问题是,当我点击更新按钮时,它会给我一个错误 form.validate不是函数我使用了 ng-validate指令 ref {{3} } 另外,我使用 Angular js 1.6.9 我的jquery链接是

    <script type="text/javascript" src='<%= ResolveUrl("~/assets/node_modules/jquery/jquery-3.3.1.min.js")%>'></script>
<script type="text/javascript" src='<%= ResolveUrl("~/AngularComponents/angularsetup/angular/angular.min.js") %>' </script> eg version 1.6.9
<script type="text/javascript" src='<%=ResolveUrl("~/AngularComponents/angularsetup/angular-validate/angular-validate.js") %>' ></script> 

所以为什么要给我这个错误,因为我根据ref更改了我的代码但是它给了我那个错误请帮助我我是角度初学者

2 个答案:

答案 0 :(得分:0)

您可以尝试以这种方式定义form.validate函数:

scope.productEdit.validate = function (options) {
                    var oldSettings = validator.settings;

                    validator.settings = $.extend(true, {}, validator.settings, options);

                    var valid = validator.form();

                    validator.settings = oldSettings; // Reset to old settings

                    return valid;
                };

答案 1 :(得分:0)

您可能应该添加脚本jquery.validate.min.js以使其正常工作。