2017-08-17 59 views
1

我正在使用歐芹JS驗證表單。 當用戶在系統上註冊時,系統會檢查他的police_id是否存在於系統中。 這裏就是AJAX的Jquery代碼。歐芹JS力場失敗驗證狀態

//police_id 
$('#add_user input[name=police_id]').keyup(function (e) { 
    $('.exists_police_id').hide(); 
    $('.ok_police_id').hide(); 
    var site_path = $('#sitePath').val(); 
    var value = $(this).val(); 
    var field = 'policeId'; 
    var table_name = 'tbl_users'; 
    if(value.length>9){ 
     $('.loading_pic_police_id').show(); 
     $.ajax({ 
      url:site_path +'/users_manage_cont/check_unique_fields', 
      method:'POST', 
      data:{table_name:table_name,field:field,value:value}, 

      success:function(data) 
      { 
       $('.loading_pic_police_id').hide(); 

       if(data ==''){ 
        $('.ok_police_id').show(); 
       }else{ 
        $('input[name=police_id]').parsley().addError('forcederror', {message: ' This Police ID already Exists in the System.', updateClass: true}); 
        return false; //this validation fails 
       } 
      } 

     }); 
    } 
}); 

如果police_id不存在,則響應數據爲空。然後允許用戶提交表單。 但是問題是當police_id存在於表中時,表單應該是validate = false。 這裏看我的其他{}部分

$('input[name=police_id]').parsley().addError('forcederror', {message: ' This Police ID already Exists in the System.', updateClass: true}); 
       return false; //this validation fails 

這一套錯誤消息和現場紅色。 但是當點擊提交按鈕表單可以提交。 如何在表中找到現有的police_id時使parsley驗證狀態爲false?

回答

0

您只顯示錯誤消息,但實際上並未使驗證失敗。

這裏是我的建議:

  1. 從AJAX的返回值寫入一個隱藏的輸入字段
  2. 測試你police_id輸入字段香菜是等於隱藏字段的值。

我做了一個jsfiddle。如果你輸入「12345」(你的值當然應該來自AJAX),它會給你一個錯誤信息,而不是驗證。如果你輸入其他的東西,它會驗證。這是不是完美,但它應該給你印象我的意思。

jsfiddle.net/68y7nc0t/

問候