簡體   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