2014-09-10 77 views
0

我有一個登記表分割成正在用完美的基礎上,從網站的一個例子的代碼塊:Parsley.js提交表單無法正常工作遠程

  $('.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' 
     ); 

回答

0

我終於得到了這個工作。可能有更簡單的方法來做到這一點,但這是有效的。

首先,我犯了一個錯誤我的代碼,我需要返回true如果狀態爲200

$('#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的一個大用戶,因此一般需要我,同時通過這些東西來工作,我的方式,但我認爲香菜如此受歡迎也就爲我提供更好的支持和文檔噸。