Javascript 使用Parsley.js进行远程验证

Javascript 使用Parsley.js进行远程验证,javascript,forms,validation,parsley.js,Javascript,Forms,Validation,Parsley.js,我正在尝试在我的(Django)表单中实现电子邮件字段的远程验证,但我收到错误“无法读取未定义的属性'addAsyncValidator' 模板(我正在使用,因此不需要remote.parsley.js) 我缺少什么?欧芹是一个全局变量。您需要调用Parsley.addAsyncValidator(…)来设置自定义函数以分析ajax调用的结果,但不需要调用$somejQueryobject.Parsley。无论什么Parsley都是全局变量。您需要调用Parsley.addAsyncValida

我正在尝试在我的(Django)表单中实现电子邮件字段的远程验证,但我收到错误“无法读取未定义的属性'addAsyncValidator'

模板(我正在使用,因此不需要remote.parsley.js


我缺少什么?

欧芹是一个全局变量。您需要调用
Parsley.addAsyncValidator(…)
来设置自定义函数以分析ajax调用的结果,但不需要调用
$somejQueryobject.Parsley。无论什么
Parsley
都是全局变量。您需要调用
Parsley.addAsyncValidator(…)
来设置自定义函数以分析ajax调用的结果,但不需要调用
$somejQueryobject.Parsley。不管是什么

嗨,我是Javascript/JSON/等的初学者。;由于我在过去几天一直在为这个问题苦苦挣扎,您能否给我一些提示,告诉我如何完全理解这个问题,以及如何使用Parsley.js(和Django)构建自定义客户端验证?非常感谢。嗨,我是Javascript/JSON/等的初学者。;由于我在过去几天一直在为这个问题苦苦挣扎,您能否给我一些提示,告诉我如何完全理解这个问题,以及如何使用Parsley.js(和Django)构建自定义客户端验证?非常感谢。
<head>
<script src="{% static 'js/parsley.js' %}"></script>
</head> 

<form id="user_form" method="post" action="/register/" enctype="multipart/form-data">

    {% csrf_token %}

    <input data-parsley-remote="/check_email/"
           data-parsley-remote-message="The introduced email has already been registered!"
           data-parsley-remote-options="{ 'type': 'POST' }"
           data-parsley-remote-validator="emailAvailable"
           data-parsley-remote-reverse="false"
           data-parsley-required="true"
           data-parsley-required-message="This field is required."
           data-parsley-trigger="change"
           data-parsley-type="email"
           id="id_email"
           name="email"
           required="required"
           type="email"
           value="a@a.com"/>

    {{ user_form.as_p }}

    <input type="submit" class="btn btn-info submit" name="submit" value="Register" />
</form>
var csrftoken = $.cookie('csrftoken');

function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}

$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken);
        }
    }
});

$(function() {
            $("#user_form").parsley();
        });

        $('[name="email"]').Parsley.addAsyncValidator('emailAvailable', function (xhr) {
            var emailExists = this.$element.val().startsWith(xhr.responseJSON.email + "@");
            return !emailExists;
        }, '/check_email/');