2017-08-17 45 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/

问候