javascript - 需要 Jquery 验证插件方法(依赖表达式)使用正常但回调不起作用

标签 javascript jquery jquery-validate validation

我正在努力使这项工作成功; 此验证应用于付款表单,如您所见,只有 3 个必需的输入,当且仅当

input[type=radio]:checked').val() != "CB";

wich 表示用户是否要使用信用卡以外的其他方式付款。 以下是验证我的表单的完整代码。

$("#paiement").validate({
        errorClass: "invalid",
        validClass: "success",
        rules: {
            referenceTypeComplementBancaire: true,
            banque: {
                required: function(nomBanque){
                    return $('#paiement input[type=radio]:checked').val() != "CB";
                }
            },
            numeroComplementBancaire: {
                required: function(numeroCompl){
                    return $('#paiement input[type=radio]:checked').val() != "CB";
                }  
            },
            montantComplementBancaire: {
                required: function(montantCompl){
                    var logg = montantRentre >= panierTotal;
                    console.log(logg);
                    return montantRentre >= panierTotal;
                }
            }
        },
        messages: {
         referenceTypeComplementBancaire: "",
         banque:"",
         numeroComplementBancaire:"",
         montantComplementBancaire:""
        }
    });
}

没什么难的,真的。 但是,令我难以理解的是为什么 montantComplementBancaire 没有经过验证,即使我的控制台日志记录在正确的时间向我显示“真”或“假”。 我做错了什么?

------------------------编辑---------------- --------------------------

我认为存在某种误解,我的错。抱歉,伙计们。 下面是表单最终的样子:

        $("#paiement").validate({
        errorClass: "invalid",
        validClass: "success",
        rules: {
            referenceTypeComplementBancaire: true,
            banque: {
                required: function(nomBanque){
                    return $('#paiement input[type=radio]:checked').val() != "CB";
                }
            },
            numeroComplementBancaire: {
                required: function(numeroCompl){
                    return $('#paiement input[type=radio]:checked').val() != "CB";
                }  
            },
            montantComplementBancaire: {
                required: function(){
                    var logg = panierTotal > montantRentre; 
                    console.log(logg); 
                    return panierTotal > montantRentre; 
                }
            }
        },
        messages: {
         referenceTypeComplementBancaire: "",
         banque:"",
         numeroComplementBancaire:"",
         montantComplementBancaire:""
        }
    });

我哪里错了?我不仅希望“montantComplementBancaire”得到验证,而且我希望它在当且仅当它 >= to panierTotal

时才有效

现在,我只是在测试是否验证它,但我正在寻找的是一种在 montantRentre >= 到 panierTotal 时返回“有效”的方法。

我是否让 tjis 更清晰了?

最佳答案

我认为您的验证设置不正确。每个表单元素的“required”属性应该是一个 JavaScript 对象,“depends”属性设置为一个函数,假设您要尝试做的是条件要求。请参阅验证选项页面上的“规则”条目:http://docs.jquery.com/Plugins/Validation/validate#toptions

我认为固定代码是:

$("#paiement").validate({
    errorClass: "invalid",
    validClass: "success",
    rules: {
            referenceTypeComplementBancaire: 'required',
            banque: {
                    required: {
                        depends: function(nomBanque){
                            return $('#paiement input[type=radio]:checked').val() != "CB";
                        }
                    }
            },
            numeroComplementBancaire: {
                    required: {
                        depends: function(numeroCompl){
                            return $('#paiement input[type=radio]:checked').val() != "CB";
                        }  
                    }
            },
            montantComplementBancaire: {
                    required: {
                        depends: function(montantCompl){
                            var logg = montantRentre >= panierTotal;
                            console.log(logg);
                            return montantRentre >= panierTotal;
                        }
                    }
            }
    },
    messages: {
     referenceTypeComplementBancaire: "",
     banque:"",
     numeroComplementBancaire:"",
     montantComplementBancaire:""
    }
    });
}

关于javascript - 需要 Jquery 验证插件方法(依赖表达式)使用正常但回调不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1974603/

相关文章:

javascript - 如何在固定时间间隔后上下移动标题?

javascript - 控制 Google Mx 的缩放级别

javascript - jQuery.validate 立即验证字段而不是在提交时验证?

javascript - 如何根据所选半径显示谷歌地图

javascript - 我如何使用 XML 设计样式

javascript - 动画多边形点 snap.svg

javascript - Materialise CSS on chip 删除

jquery - 为什么 Jquery 不适用于 asp.net 中 LinkBut​​ton 的 CssClass 属性?

javascript - 将数字格式化为货币值

c# - CheckBoxFor 的 MVC 3 自定义 ValidationAttribute 在客户端触发两次