jQuery 验证同一字段的条件错误消息
jQuery Validate conditional error messages for same field
我想根据以下条件为单个字段显示不同的错误消息。
jQuery(document).ready(function () {
//...
..//
$("#aID").validate({
rules: {
reason: "required",
aic: "required"
aAmt:{
required: function (element) {
var err;
var new_balance = Math.round(100*beg_balance)/100 - Math.abs(Math.round(100*adjustAmount)/100);
if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
err = "123";
return true;
}
else if (new_balance)
{
err = "321";
return true;
}
return false;
}
}
}
},
messages: {
reason:"Please select a reason code.",
aic: "Please select a credit AIC.",
pwdOverride: err
},
});
有如下选项
messages: {
RoutingNumber: {
required:"Message1",
digits: "Message2",
rangelength: "Message 3"
}
}
但是我的这个插件没有任何内置的验证方法。
关于如何实现它的任何帮助?
我的内置验证的意思是,如果您看到我的 aAmt
else 循环:rules
,它不适合 jQuery Validate 的内置验证,例如: List of built in validation methods
正如我在下面的评论中所指出的,您这里有一些严重的语法问题。
$("#aID").validate({
rules: {
reason: "required",
aic: "required" // <- MISSING a comma here
aAmt: {
required: function(element) {
var err;
var new_balance = Math.round(100 * beg_balance) / 100 - Math.abs(Math.round(100 * adjustAmount) / 100);
if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
err = "123";
return true;
} else if (new_balance) {
err = "321";
return true;
}
return false;
} // <- REMOVE extra brace
}
}
},
messages: {
reason: "Please select a reason code.",
aic: "Please select a credit AIC.",
pwdOverride: err // <- no such field defined in 'rules'
}
});
您在 aic
规则之后缺少一个逗号。
你的条件函数中有一个额外的大括号。
在 messages
中,您指的是一个名为 pwdOverride
的字段,但在 rules
中没有定义这样的字段。如何在没有验证规则的字段上定义验证错误消息?
自定义消息的条件函数应包含在 messages
对象中,而不是 rules
对象中。 rules
用于定义规则,messages
用于定义消息。
已更新:
$("#aID").validate({
rules: {
reason: "required",
aic: "required",
aAmt: "required"
},
messages: {
reason: "Please select a reason code.",
aic: "Please select a credit AIC.",
aAmt: {
required: function(element) {
var err = "this field is required"; // default message
var new_balance = Math.round(100 * beg_balance) / 100 - Math.abs(Math.round(100 * adjustAmount) / 100);
if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
err = "123";
} else if (new_balance) {
err = "321";
}
return err; // <- display the custom message
}
}
}
});
由于 您没有向我们展示您表单的 HTML 标记,我只能提供一个通用的概念验证示例:jsfiddle.net/3of700am/
注释:
- 注意你的 JavaScript 控制台,因为它会告诉你很多语法错误。
- 正确设置代码格式和意图,使其更易于阅读和故障排除。格式化后,extra/missingbrackets/braces很容易找到。
我想根据以下条件为单个字段显示不同的错误消息。
jQuery(document).ready(function () {
//...
..//
$("#aID").validate({
rules: {
reason: "required",
aic: "required"
aAmt:{
required: function (element) {
var err;
var new_balance = Math.round(100*beg_balance)/100 - Math.abs(Math.round(100*adjustAmount)/100);
if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
err = "123";
return true;
}
else if (new_balance)
{
err = "321";
return true;
}
return false;
}
}
}
},
messages: {
reason:"Please select a reason code.",
aic: "Please select a credit AIC.",
pwdOverride: err
},
});
有如下选项
messages: {
RoutingNumber: {
required:"Message1",
digits: "Message2",
rangelength: "Message 3"
}
}
但是我的这个插件没有任何内置的验证方法。 关于如何实现它的任何帮助?
我的内置验证的意思是,如果您看到我的 aAmt
else 循环:rules
,它不适合 jQuery Validate 的内置验证,例如: List of built in validation methods
正如我在下面的评论中所指出的,您这里有一些严重的语法问题。
$("#aID").validate({
rules: {
reason: "required",
aic: "required" // <- MISSING a comma here
aAmt: {
required: function(element) {
var err;
var new_balance = Math.round(100 * beg_balance) / 100 - Math.abs(Math.round(100 * adjustAmount) / 100);
if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
err = "123";
return true;
} else if (new_balance) {
err = "321";
return true;
}
return false;
} // <- REMOVE extra brace
}
}
},
messages: {
reason: "Please select a reason code.",
aic: "Please select a credit AIC.",
pwdOverride: err // <- no such field defined in 'rules'
}
});
您在
aic
规则之后缺少一个逗号。你的条件函数中有一个额外的大括号。
在
messages
中,您指的是一个名为pwdOverride
的字段,但在rules
中没有定义这样的字段。如何在没有验证规则的字段上定义验证错误消息?自定义消息的条件函数应包含在
messages
对象中,而不是rules
对象中。rules
用于定义规则,messages
用于定义消息。
已更新:
$("#aID").validate({
rules: {
reason: "required",
aic: "required",
aAmt: "required"
},
messages: {
reason: "Please select a reason code.",
aic: "Please select a credit AIC.",
aAmt: {
required: function(element) {
var err = "this field is required"; // default message
var new_balance = Math.round(100 * beg_balance) / 100 - Math.abs(Math.round(100 * adjustAmount) / 100);
if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
err = "123";
} else if (new_balance) {
err = "321";
}
return err; // <- display the custom message
}
}
}
});
由于 您没有向我们展示您表单的 HTML 标记,我只能提供一个通用的概念验证示例:jsfiddle.net/3of700am/
注释:
- 注意你的 JavaScript 控制台,因为它会告诉你很多语法错误。
- 正确设置代码格式和意图,使其更易于阅读和故障排除。格式化后,extra/missingbrackets/braces很容易找到。