Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用addAsyncValidator和remote时Parsley.js提交表单不工作_Javascript_Php_Ajax_Validation_Parsley.js - Fatal编程技术网

Javascript 使用addAsyncValidator和remote时Parsley.js提交表单不工作

Javascript 使用addAsyncValidator和remote时Parsley.js提交表单不工作,javascript,php,ajax,validation,parsley.js,Javascript,Php,Ajax,Validation,Parsley.js,我有一份分块的登记表,根据网站上的一个示例,使用此代码可以完美地工作: $('.register-next').on('click', function () { var current = $(this).data('currentBlock'), next = $(this).data('nextBlock'); console.log('current block = ' + current)

我有一份分块的登记表,根据网站上的一个示例,使用此代码可以完美地工作:

            $('.register-next').on('click', function () {
            var current = $(this).data('currentBlock'),
            next = $(this).data('nextBlock');

            console.log('current block = ' + current);
            console.log('next block = ' + next);
            // only validate going forward. If current group is invalid, do not go further
            // .parsley().validate() returns validation result AND show errors
            if (next > current)
              if (false === $('#form-register').parsley().validate('block' + current))
                return;

                // validation was ok. We can go on next step.
                $('.block' + current)
                  .removeClass('show')
                  .addClass('hidden');

                $('.block' + next)
                  .removeClass('hidden')
                  .addClass('show');
        });
然后,我想在代码的最后一块添加一个额外的ajax验证,以确保用户名没有被使用。我有检查工作,但问题是,当验证检查通过时,表单现在不会提交。单击submit按钮只是再次调用远程功能

我假设在完成所有验证检查后,我必须重新分配提交按钮的功能

ID用户名与表单最后一块中的输入字段相关

谢谢

            $('#username').parsley().addAsyncValidator(
          'validateUsername', function (xhr) {
               var UserLogin = $('#username').parsley();

               window.ParsleyUI.removeError(UserLogin,'errorUsername');


               if(xhr.status == '200'){

                    console.log("in 200");
                    return;
               }

               if(xhr.status == '404'){
                    response = $.parseJSON(xhr.responseText);
                    console.log("username exists");
                    window.ParsleyUI.addError(UserLogin,'errorUsername',response.error);
               }
          }, 'inc/check_username.php'
        );

我终于成功了。也许有一个简单得多的方法可以做到这一点,但这是可行的

首先,我的代码犯了一个错误,如果状态是200,我需要返回true

$('#username').parsley().addAsyncValidator(
          'validateUsername', function (xhr) {
               var UserLogin = $('#username').parsley();

               window.ParsleyUI.removeError(UserLogin,'errorUsername');


               if(xhr.status == '200'){

                    return true;
               }

               if(xhr.status == '404'){
                    response = $.parseJSON(xhr.responseText);
                    console.log("username exists");
                    window.ParsleyUI.addError(UserLogin,'errorUsername',response.error);
               }
          }, 'inc/check_username.php'
        );
然后,我添加了一段额外的代码,以侦听是否单击提交按钮,并在使用javascript提交之前从表单中删除欧芹验证

$('#new-user-submit').click(function(){

            $('#form-register').parsley().asyncValidate()
                .done(function(){
                    $('#form-register').parsley().destroy(); 
                    $('#form-register').submit(); });
});
我不是一个javascript的大用户,所以我通常需要一段时间来完成这些事情,但我认为随着欧芹如此流行,它会有更好的支持和文档