拆下';必需的';当输入填充jQuery验证插件时,从复选框

拆下';必需的';当输入填充jQuery验证插件时,从复选框,jquery,forms,jquery-validate,Jquery,Forms,Jquery Validate,因此,我正在使用几个文本输入和复选框制作一个联系人表单,并使用jQuery验证插件进行验证,我想要实现的是: 填充文本输入后,复选框上应用的插件规则中的“required”属性将被删除 这是我的HTML(在引导模式中: <div id="invitoUno" class="modal fade" role="dialog"> <div class="modal-dialog"> <!-- Modal content-->

因此,我正在使用几个文本输入和复选框制作一个联系人表单,并使用jQuery验证插件进行验证,我想要实现的是:

填充文本输入后,复选框上应用的插件规则中的“required”属性将被删除

这是我的HTML(在引导模式中:

<div id="invitoUno" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header" style="height: 0; border-bottom: none;">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>
            <div class="modal-body">
                <div class="row form-invito">
                    <div class="col-12">
                        <form method="post" action="solicitudinvito.php" id="invitoform" name="invitoform">
                            <h6>Nombre completo:</h6>
                            <div class='cb-input'>
                                <input id='nombre' type="text" name="nombre" placeholder="" required />
                            </div>
                            <div class='cb-input'>
                                <input type="text" value="Fam. de Luis Arturo Garza Bassoco" id="persona" name="persona" hidden>
                            </div>
                            <div class="row">
                                <div class="col-sm-6 col-12">
                                    <h6>Celular:</h6>
                                    <div class='cb-input'>
                                        <input id='celular' type="text" name="celular" placeholder="" required />
                                    </div>
                                </div>
                                <div class="col-sm-6 col-12">
                                    <h6>Teléfono de casa (opcional):</h6>
                                    <div class='cb-input'>
                                        <input id='telcasa' type="text" name="telcasa" placeholder="" />
                                    </div>
                                </div>
                            </div>
                                    <h6>¿Requieres de recibo deducible de impuestos?:
                                <label style="padding-left: 20px;">Sí</label>

                                <input type="checkbox" class="factura option-input checkbox" name="factura" value="Requiere factura" required />
                                <!--   -->
                                <label style="padding-left: 20px;">No</label>

                                <input type="checkbox" class="factura option-input checkbox" name="factura" value="No requiere factura" placeholder="" required />
                                <!--   -->
                            </h6>
                            <br>
                            <h4 style="padding-bottom:5px;">deseo invitarle la despensa a:</h4>

                            <div class="row">
                                <div class="col-sm-2 col-12">
                                    <span style="color:#5C5B5F; font-family:'PT Sans', sans-serif;">1 familia</span><br>
                                    <span class="cantidad">$160.00</span>
                                    <input type="checkbox" class="familia option-input checkbox" style="top:10%;" name="familia" value="Apoya una familia = $160.00" placeholder="" required />
                                </div>
                                <div class="col-sm-2 col-12">
                                    <span style="color:#5C5B5F; font-family:'PT Sans', sans-serif;">2 familias</span><br>
                                    <span class="cantidad">$320.00</span>
                                    <input type="checkbox" class="familia option-input checkbox" style="top:10%;" name="familia" value="Apoya dos familias = $320.00" placeholder="" required />
                                </div>
                                <div class="col-sm-2 col-12">
                                    <h6 style="color:#FFBA00;">Otra cantidad:</h6>
                                </div>
                                <div class="col-sm-6 col-12">
                                    <div class='cb-input' style="margin-top: -10px;">
                                        <input id='otrafamilia' type="text" name="familia" placeholder="$" />
                                    </div>
                                </div>
                            </div>
                            <br>
                            <h4 style="padding-bottom:5px;">Aportación empresa mensual:</h4>

                            <div class="row">
                                <div class="col-sm-4 col-12">
                                    <span class="cantidad">$1,000.00</span>
                                    <input type="checkbox" class="aportacion option-input checkbox" style="top:10%;" name="empresa" value="Aportacion mensual de $1000.00" placeholder="" />
                                </div>
                                <div class="col-sm-2 col-12">
                                    <h6 style="color:#FFBA00;">Otra cantidad:</h6>
                                </div>
                                <div class="col-sm-6 col-12">
                                    <div class='cb-input' style="margin-top: -10px;">
                                        <input id='empresaotra' type="text" name="empresa" placeholder="$" />
                                    </div>
                                </div>
                            </div>
                            <div class="col-12 text-center" style="box-shadow: none; margin-bottom: 0px;">
                                <label class="acepto" style="padding-left: 20px;">Acepto el compromiso con Banco de Alimentos de Los Mochis I.A.P.</label>
                                <input type="checkbox" class="option-input checkbox" name="compromiso" value="Acepto el compromiso con Banco de Alimentos de Los Mochis I.A.P." required />
                            </div>
                            <div class="col-12 text-center" style="padding-top: 30px; padding-bottom: 30px;">
                                <button class="btn-amarillo" type="submit" id="submit">envíar</button>
                            </div>
                        </form>
                    </div>

                </div>
            </div>
        </div>
    </div>
</div>

&时代;
名称:completo:
Celular:
卡萨之家电话(可选):
?可推断的不可抗力要求:
西
不

德塞奥·因维塔勒·德斯本萨: 1个家庭
$160.00 2个家庭
$320.00 奥特拉·坎蒂达德:
Aportación empresa mensual: $1,000.00 奥特拉·坎蒂达德: 这是一个关于墨西哥银行的折衷方案。 恩瓦尔
规则如下:

<script type="text/javascript">
    $(document).ready(function() {
        $('#celular').mask('(000) 000-0000');
        $('.success').fadeOut(0);
        var v = $("#invitoform").validate({
            rules: {
                nombre: {
                    required: true
                },
                celular: {
                    required: true
                },
                factura: {
                    required: true, 
                    minlength: 1 
                },
                familia: {
                    required: true
                },
                empresa: {
                    required: true
                },
                compromiso: {
                    required: true
                }
            },
            messages: {
                nombre: {
                    required: "Debes escribir tu(s) nombre(s) y apellido(s).",
                },
                celular: {
                    required: "Debes de escribir tu número de teléfono.",
                    minlength: "El número que ingresaste no es válido."
                },
                factura: {
                    required: "Debes elegir una opción."
                },
                familia: {
                    required: "Debes de elegir una opción o escribir una cantidad."
                },
                empresa: {
                    required: "Debes de elegir una opción o escribir una cantidad."
                },
                compromiso: {
                    required: "Necesitas aceptar tu compromiso con nosotros antes de continuar."
                }
            }

        })
    });
</script>

$(文档).ready(函数(){
$('#celular')。掩码('(000)000-0000');
$('.success')。淡出(0);
var v=$(“#invitoform”)。验证({
规则:{
名义:{
必填项:true
},
celular:{
必填项:true
},
事实:{
要求:正确,
最小长度:1
},
家庭:{
必填项:true
},
empresa:{
必填项:true
},
妥协:{
必填项:true
}
},
信息:{
名义:{
必填项:“Debes Describir tu(s)nombre(s)y apellido(s)。”,
},
celular:{
要求:“德贝斯·德斯克里比尔·图努梅罗·德特莱福诺。”,
minlength:“这不是瓦利多。”
},
事实:{
必填:“Debes elegir una opción.”
},
家庭:{
必选:“请填写您的姓名。”
},
empresa:{
必选:“请填写您的姓名。”
},
妥协:{
要求:“必须遵守连续性协议。”
}
}
})
});
尽管它们具有相同的名称(两个复选框和文本输入),但规则“必需”似乎不起作用,因为当我填充输入时,仍然需要一个复选框才能继续

“尽管它们有相同的名称(两个复选框和文本输入),但规则“必需”似乎不起作用,因为当我填写输入时,仍需要一个复选框才能继续。”

什么?您在复选框和文本元素上放置了相同的
名称
?这没有任何意义,只会忽略第二个实例

首先,修复
名称
属性,使其唯一。只有这组复选框可以具有相同的
名称

第二,如果您想基于某些动态条件更改规则,那么您可以使用条件函数代替规则声明

rules: {
    ....
    empresa_checkbox: {
        required: {
            depends: function() {
                // checkbox only required when text field is empty
                return $('input[name="empresa_text"]').is(':blank');
            }
        }
    },
    empresa_text: {
        required: {
            depends: function() {
                // text box only required when checkbox is unchecked
                return $('input[name="empresa_checkbox"]').is(':unchecked');
            }
        }
    },
    ....             
},
和鳍