简体   繁体   English

如果4个字段中的1个具有值,则进行Parsley.js验证

[英]Parsley.js Validation if 1 of 4 Fields Has a Value

On a form there are 4 text inputs. 在表单上有4个文本输入。
If at least 1 of them has a value then all remaining fields must have a value. 如果其中至少有一个值,那么所有其余字段都必须有一个值。
Is it possible to configure Parsley.js for this validation? 是否可以配置Parsley.js进行此验证?

Yes, it is possible. 对的,这是可能的。 However, there is no default configuration to do it. 但是,没有默认配置可以执行此操作。

This means that you must create that logic in your javascript and destroy / bind parsley in each case. 这意味着您必须在javascript中创建该逻辑,并在每种情况下销毁/绑定欧芹。

Take a look at this code ( jsfiddle available ): 看一下这段代码( jsfiddle可用 ):

<form class="form-inline" method="post" id="myForm">
    <input type="text" id="field1" name="field1" />
    <input type="text" id="field2" name="field2" />
    <input type="text" id="field3" name="field3" />
    <input type="text" id="field4" name="field4" />
    <button type="submit" class="btn btn-default">test</button>
</form>

<script>
    $('#myForm').parsley();

    $("#field1, #field2, #field3, #field4").on('change', function() {
        if ($("#field1").val().length > 0 ||
            $("#field2").val().length > 0 ||
            $("#field3").val().length > 0 ||
            $("#field4").val().length > 0 )
        {
            // If any field is filled, set attr required
            $("#field1, #field2, #field3, #field4").attr("required", "required");
        } else {
            // if all fields are empty, remove required attr
            $("#field1, #field2, #field3, #field4").removeAttr("required");
        }
        // destroy ParsleyForm instance
        $('#myForm').parsley().destroy();

        // bind parsley
        $('#myForm').parsley();
    });

    $("#myForm" ).on('submit', function( event ) {
        $(this).parsley().validate();
        if ($(this).parsley().isValid()) {
            alert('form is valid');
        }
        event.preventDefault();
    });

</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM