Javascript 未捕获的类型错误:无法读取未定义的属性“调用”

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/28410596/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-23 01:45:07  来源:igfitidea点击:

Uncaught TypeError: Cannot read property 'call' of undefined

javascriptjqueryjquery-validate

提问by user61629

I have a preexisting form which I'm trying to add jquery validation to containing :

我有一个预先存在的表单,我正在尝试将 jquery 验证添加到包含:

<form id="form" method="POST" action="/title/">
    {% csrf_token %}
<input type="hidden" name="id" value="6">
<input type="hidden" name="custom_checkbox_Electronic_Signature_man" value="1">
                            <p> <span class="style9">First Name </span>
                              <input type="text" name="first_name" value="" size="20" class="style7"><span class="style9">
                            Last Name </span>
                              <input type="text" name="last_name" value="" size="20" class="style7"><span class="style9">

Using the jquery validator plugin, I have added:

使用 jquery 验证器插件,我添加了:

$('form').validate({
    rules: {
        first_name: {
            minlen: 3,
            maxlength: 15,
            required: true
        },
        last_name: {
            minlength: 3,
            maxlength: 15,
            required: true
        },
        email: {
          required: true,
          email: true
        },
         phone1: {
             required: true,
             phoneUS: true
          },
        phone2: {
             required: true,
             phoneUS: true
          },
            street: {
            required: true
          },
              city: {
            required: true
          },
              state: {
            required: true
          },
              zip: {
            zipcodeUS: true
          }

    },
    highlight: function(element) {
        $(element).closest('.style9').addClass('.style13');
        //$(element).addClass('.style13');
    },
    unhighlight: function(element) {
        $(element).closest('.style9').removeClass('.style13');
        //$(element).removeClass('.style13');
    },
    errorElement: 'span',
    errorClass: 'style13',
    errorPlacement: function(error, element) {
        if(element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }
    }
});

I'm getting the error listed above . What am I doing wrong?

我收到上面列出的错误。我究竟做错了什么?

回答by adeneo

Replace minlenwith minlength, and it works, there is no minlenproperty, so callfails internally

替换minlenminlength,它可以工作,没有minlen属性,因此call在内部失败

$('form').validate({
    rules: {
        first_name: {
            minlength: 3,  // <- here
            maxlength: 15,
            required: true
        },
        last_name: {
            minlength: 3,
            maxlength: 15,
            required: true
        },
   ..........

回答by George Siggouroglou

Generally speaking this is an error that can be raised if you have set a non valid jQuery validation rule.
You can find the valid validation rules using thislink.

一般来说,如果您设置了无效的 jQuery 验证规则,则会引发此错误。
您可以使用链接找到有效的验证规则。

回答by Shakti Srivastav

$(document).ready(function() {
    jQuery.validator.addMethod("noSpace", function(value, element){
            return value.indexOf("  ")<0 && value !==""; 
    }, "Space are not allowed");
});

回答by websky

try

尝试

jQuery(document).ready(function(){
                $('form').validate({
    rules: {
        first_name: {
            minlen: 3,
            maxlength: 15,
            required: true
        },
        last_name: {
            minlength: 3,
            maxlength: 15,
            required: true
        },
        email: {
          required: true,
          email: true
        },
         phone1: {
             required: true,
             phoneUS: true
          },
        phone2: {
             required: true,
             phoneUS: true
          },
            street: {
            required: true
          },
              city: {
            required: true
          },
              state: {
            required: true
          },
              zip: {
            zipcodeUS: true
          }

    },
    highlight: function(element) {
        $(element).closest('.style9').addClass('.style13');
        //$(element).addClass('.style13');
    },
    unhighlight: function(element) {
        $(element).closest('.style9').removeClass('.style13');
        //$(element).removeClass('.style13');
    },
    errorElement: 'span',
    errorClass: 'style13',
    errorPlacement: function(error, element) {
        if(element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }
    }
});
            });