jquery Formvalidation.io根据其他字段的值搜索字段

pcww981p  于 2023-10-17  发布在  jQuery
关注(0)|答案(3)|浏览(67)

我一直在努力寻找解决这个问题的办法,但我没有太多的运气。我相信解决方案很简单,所以提前感谢您的帮助!
我正在使用formvalidation io插件,并让它在多个表单上完美工作。我有另一个大的形式,我想验证客户的名字。我有3个字段(CompanyName,FirstName,& LastName)的形式,我想验证基于以下规则:

  • CompanyName或FirstName & LastName必填
  • 如果没有输入公司名称,则需要FirstName和LastName
  • 如果输入CompanyName,则FirstName和LastName不是必需的,但可以有值

希望这一切都说得通。我已经弄清楚了如何使用一个隐藏字段来要求输入FirstName和LastName(Valdiating multiple inputs as one)。我确信这将需要某种条件验证(Conditional Validation)来完成,但我不确定如何实现。
有没有人有过这样的经历?就像我说的,提前谢谢你。

nom7f22z

nom7f22z1#

是的,你可以使用回调验证器。公司名称示例:

companyname: {
                validators : {
                    callback: {
                        message: 'companyname is required',
                        callback: function(value, validator, $field) {
                            if(document.getElementById('firstname').value && document.getElementById('lastname').value){
                                return true;
                            }
                            return false;
                        }
                    }
                }
            }
7bsow1i6

7bsow1i62#

在你的js代码中,你可以根据你想要验证的字段设置“data-fv-excluded”属性true或false,例如:

if(document.getElementById('firstname').value && document.getElementById('lastname').value){
    document.getElementById('companyname').setAttribute("data-fv-excluded", "true");
}

验证器将忽略您的字段与data-fv-excluded=“true”

bz4sfanl

bz4sfanl3#

你可以这样用。它对我来说很好:

companyname: {
                validators: {
                    callback: {
                        message: 'Please Enter first name and last name when company name is empty',
                        callback: function(input) {
                            var companyName = input.value;
                            if (companyName === '') {

                        var firstName = document.getElementById('first_name').value;
                        var latsName = document.getElementById('last_name').value;

                        return (firstName !== '')&&(latsName !== '');
                    }

                    return true;
                }
            }
        }
    }
}

相关问题