Parsley JS force Field 验证状态失败

Parsley JS force Field to fail validate status

我正在使用欧芹 JS 验证表单。 当用户在系统上注册时,系统检查他的police_id是否存在于系统中。 这里是 AJAX Jquery 代码。

//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不存在,则响应数据为空。然后允许用户提交表单。 但问题是当table中存在police_id时,表单应该是validate=false。 看看我的 else{} 部分

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

此设置错误消息和字段颜色为红色。 但是当单击提交按钮时,可以提交表单。 当 table 中存在 police_id 时,如何使欧芹验证状态为假?

您只是显示一条错误消息,但实际上并没有使验证失败。

这是我的建议:

  1. 将 AJAX 中的 return 值写入隐藏输入字段
  2. 测试你 police_id 使用欧芹的输入字段 等于该隐藏字段的值。

我做了一个jsfiddle。如果您输入“12345”(您的值当然应该来自 AJAX),它会给您一条错误消息并且不会验证。如果您输入其他内容,它将生效。它完美,但它应该让你明白我的意思。

jsfiddle.net/68y7nc0t/

此致