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

时间:2017-08-17 12:52:56

标签: jquery ajax validation parsley.js

我正在使用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。 在这里看看我的其他{}部分

 $('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 个答案:

答案 0 :(得分:1)

您只显示错误消息,但实际上并未使验证失败。

这是我的建议:

  1. 将AJAX的返回值写入隐藏的输入字段
  2. 使用欧芹测试police_id输入字段等于该隐藏字段的值。
  3. 我做了一个jsfiddle。如果您输入" 12345" (你的价值当然应该来自AJAX)它会给你一个错误信息而不是验证。如果您输入其他内容,则会进行验证。它的完美,但它应该给你一个我的意思。

    jsfiddle.net/68y7nc0t /

    此致