繁体   English   中英

使用addAsyncValidator和Remote时Parsley.js提交表单不起作用

[英]Parsley.js Submit form not working when using addAsyncValidator and remote

我有一个注册表格,该表格分为多个块,根据网站上的示例之一,使用此代码可以正常工作:

            $('.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验证,以确保用户名尚未被使用。 我有检查工作,但问题是,通过验证检查后,现在将不提交表单。 单击提交按钮仅再次调用远程功能。

我假设一旦完成所有验证检查,就必须重新分配“提交”按钮的功能?

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的大用户,因此通常需要一些时间来完成这些工作,但是我认为香菜非常受欢迎,因此会提供更好的支持和文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM