Parsley JS 强制字段验证状态失败

Posted

技术标签:

【中文标题】Parsley JS 强制字段验证状态失败【英文标题】:Parsley JS force Field to fail validate status 【发布时间】:2018-01-25 21:38:45 【问题描述】:

我正在使用 parsley 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 不存在,则响应数据为空。然后允许用户提交表单。 但问题是当表中存在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

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

【问题讨论】:

【参考方案1】:

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

这是我的建议:

    将 AJAX 的返回值写入隐藏的输入字段 用欧芹测试你的 police_id 输入字段是否等于该隐藏字段的值。

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

jsfiddle.net/68y7nc0t/

问候

【讨论】:

以上是关于Parsley JS 强制字段验证状态失败的主要内容,如果未能解决你的问题,请参考以下文章

JS Parsley 仅验证表单中的某些字段

即使 Parsley 验证失败,.submit() 也会始终执行

parsley.js 可选地验证数字输入

Parsley js:如何验证模态弹出窗口内的输入字段并在模态本身内显示错误消息

使用 parsley js 进行表单验证。字母数字和密码确认

动态禁用禁用字段的 Parsley 验证