parsley.js-禁用maxlength验证

用户名

当用户在表单的选择列表上进行选择时,我试图动态禁用我的几个输入字段上的parsley.js最大长度。

我已经阅读了该线程,但是当我将代码放入字段时,不会触发欧芹,而是提交表单,并且我不明白为什么。

我已经阅读了parsley.js文档,但是当我添加以下代码行时,无法看到为什么忽略parsley.js验证:

$('#id_employment_record_position_title').attr('data-parsley-maxlength', '0');

或者

$('#id_employment_record_position_title').attr('data-parsley-maxlength', '150');

这是我的代码,当用户更改表单上的选择列表时,动态地打开和关闭欧芹验证:

function toggleFormDetails() {

    if ( $('#id_employment_record_display_type').val() == '8888' || $('#id_employment_record_display_type').val() == '9999' ) {

        //disable the input field.        
        $('#id_employment_record_position_title').prop('disabled', true); 
        ....

        //destroy parsley on the form.
        //$('#employment_history_details_form').parsley().destroy();

        //disable the parsley maxlength, when the input field is disabled.
        $('#id_employment_record_position_title').attr('data-parsley-maxlength', '0');

        //reinitialise parsley on the form.
        //$('#employment_history_details_form').parsley();

    } else {

        //enable the input field.
        $('#id_employment_record_position_title').prop('disabled', false);
        ....

        //destroy parsley on the form.
        //$('#employment_history_details_form').parsley().destroy();

        //change the parsley cs error values for all the required form inputs.
        $('#id_employment_record_position_title').attr('data-parsley-maxlength', '150');

        //reinitialise parsley on the form.
        //$('#employment_history_details_form').parsley();

    }

}

为什么我必须在表单上添加destroy&create parsley代码(我在上面已注释掉它们)?

为此编写一个自定义验证会更好吗?如果是这样,我该怎么办,因为我的js代码技能还不够好?

路易斯·克鲁兹

Parsley是一个Javascript库,其工作原理如下:

  1. 呈现html表单时,您可以通过数据属性指定所需的验证。

  2. 您表示该表单将由Parsley使用form属性data-parsley-validate或通过javascript通过进行验证$("#form").parsley()

将欧芹绑定到表单时(第二步),ParsleyForm将创建一个类型的对象,其中包含每个字段的约束。

创建对象后,不再需要html属性。因此,如果您更改任何属性,由于Parsley将验证javascript对象的约束,因此对验证没有影响。这就是为什么您需要销毁并绑定欧芹的原因(为了使用新的约束来重新创建欧芹实例)。

为了解决您的问题,您可以执行以下操作:

<form id="myForm" class="form-horizontal" method="post">
    <input type="text" name="id_employment_record_display_type"
            id="id_employment_record_display_type"
            placeholder="Set 8888 to discard maxlength validation" />
    <input type="text" name="sample" id="id_employment_record_position_title" 
            data-parsley-maxlength="150" />
    <button type="submit">Submit</button>
</form>

<script>
$(document).ready(function() {
    $("#myForm").parsley();

    $("#id_employment_record_display_type").on('change', function() {
        $("#myForm").parsley().destroy();
        if ( $(this).val() == '8888' || $(this).val() == '9999' ) {
            $('#id_employment_record_position_title').removeAttr('data-parsley-maxlength');
            $('#id_employment_record_position_title').prop('disabled', true);
        } else {
            $('#id_employment_record_position_title').attr('data-parsley-maxlength', '150');
            $('#id_employment_record_position_title').prop('disabled', false);
        }

        $("#myForm").parsley();
    });

    $("#myForm").submit(function() {
        $(this).parsley().validate();
        // when there are no client side errors when the form is submitted
        if ($(this).parsley().isValid()) {
            console.log('no client side errors!');
        } else {
            console.log('form is not valid');
        }
        event.preventDefault();
    });
});
</script>

您也可以检查此工作的jsfiddle

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过Parsley.js动态添加和删除maxlength验证?

来自分类Dev

如何通过Parsley.js动态添加和删除maxlength验证?

来自分类Dev

Parsley验证不起作用Angular js

来自分类Dev

验证Parsley.js中的链接字段

来自分类Dev

如何使用Parsley JS验证文件输入?

来自分类Dev

Parsley.js验证文件大小?

来自分类Dev

parsley.js远程验证响应

来自分类Dev

验证Parsley.js中的链接字段

来自分类Dev

parsley.js正在验证但未提交

来自分类Dev

Parsley JS 强制字段无法验证状态

来自分类Dev

使用Parsley.js验证选择的多项选择

来自分类Dev

验证Parsley.js中的复选框消息

来自分类Dev

使用parsley.js验证动态创建的字段

来自分类Dev

Parsley.js-如何向所需的验证器添加值

来自分类Dev

Parsley JS 2.x-如何验证隐藏字段?

来自分类Dev

Parsley.js-验证仅数字的可选输入

来自分类Dev

Parsley.js-如何向所需的验证器添加值

来自分类Dev

Parsley JS 2.x-如何验证隐藏字段?

来自分类Dev

使用Parsley.js验证选择的多项选择

来自分类Dev

仅使用parsley.js在提交时验证表单

来自分类Dev

Parsley.js未在复选框上为自定义验证器设置parsley-success / parsley-error

来自分类Dev

姓氏的Parsley.js模式

来自分类Dev

Parsley.js销毁并重新验证已经验证的字段

来自分类Dev

ParsleyUI.addError之后,Parsley.js远程验证响应仍验证为true

来自分类Dev

澄清 Parsley.js 中的 data-parsley-`constraint`-message

来自分类Dev

在Rails 4中正确实现Parsley.js自定义远程验证器

来自分类Dev

如何动态添加和删除要由Parsley.js验证的表单字段?

来自分类Dev

parsley.js表单验证-确认提交表单时未发现错误

来自分类Dev

在Parsley.js 2.0.0 rc3中动态添加输入和绑定验证

Related 相关文章

热门标签

归档