我有一个带有维度字段的表单,我按如下方式验证表单。
$("#myForm").validate({
rules:{
"length" : {
required: true,
number: true,
range: [0, 101.1]
},
"width" : {
required: true,
number: true,
range: [0, 101.1]
},
"weight" : {
required: true,
number: true,
range: [0, 99.999]
}
},
messages : {
"length" : {
required: globalCtx.requiredMsg,
range: $("#selectedUnit").val() =="true" ? globalCtx.invalidSizeMetric : globalCtx.invalidSizeImperial
},
"width" : {
required: globalCtx.requiredMsg,
range: $("#selectedUnit").val() =="true" ? globalCtx.invalidSizeMetric : globalCtx.invalidSizeImperial
},
"weight" : {
required: globalCtx.requiredMsg,
range: $("#selectedUnit").val() =="true" ? globalCtx.invalidWeightMetric : globalCtx.invalidWeightImperial
}
}
});
每次更改单位时,我都会调用以下函数来更改错误消息以反映英文消息。
function changeMetric(){
if($("#selectedUnit").val() =="true"){
jQuery.extend(jQuery.validator.messages, {
"weight":{
range: globalCtx.invalidWeightMetric
},
"length" : {
range: globalCtx.invalidSizeMetric
},
"width" : {
range: globalCtx.invalidSizeMetric
}
});
}else{
jQuery.extend(jQuery.validator.messages, {
"weight":{
range: globalCtx.invalidWeightImperial
},
"length" : {
range: globalCtx.invalidSizeImperial
},
"width" : {
range: globalCtx.invalidSizeImperial
}
});
}
}
但此功能未更新错误消息。
答案 0 :(得分:0)
您需要return
来自函数内的变量,否则它们将无法动态评估...
messages: {
length: {
required: function(element) {
return globalCtx.requiredMsg;
},
range: function(element) {
return $("#selectedUnit").val() =="true" ? globalCtx.invalidSizeMetric : globalCtx.invalidSizeImperial;
}
}, ....