我有一个用于创建产品记录的表单,它具有(用户控制的)动态条目(即产品可以有 N 个选项(例如不同的颜色或不同的饰面等,也可能有不同的价格)。用户添加了一组字段根据需要为每个选项提供。当然,大多数产品只有一个版本(因此只有一个选项),所以在这种情况下,不需要提供选项名称,只需提供价格。所以选项名称字段仅在以下情况下进行验证表格上有多个期权价格字段。
$('.iprice').each(function() {
$(this).rules('add', {
required: true,
number: true,
*/ messages : { required:'enter price', number:'enter only price' } */
});
});
$('.iname').each(function() {
$(this).rules('add', {
required: function(){
if ($('[name="attr[2][price]"]').length) {
return true;
} else {
return false;
}
},
/* messages: function(){
if ($('[name="attr[2][price]"]').length) {
return 'option name?';
}
} */
});
});
如上所述,验证工作正常。(请参阅此处的 jsfiddle)。但是,您会注意到验证中有两个注释掉的部分提供自定义消息。如果包含这些,一旦任何一个引用字段中有值,提交按钮将返回错误。
"{"error": "Shell 表单不验证{'html_initial_name': u'initial-js_lib', ..."
据我所知,语法是正确的,方法是正确的。谁能看到我哪里出错了?
(我意识到我可以通过为每个元素创建 data-msg-required="??xx??" 属性来以其他方式解决问题,但这有点不雅和冗长。)
请问有什么想法吗?
这是另一个 jsfiddle,显示只有一组选项的表单。price 字段的自定义消息已启用,但是,如果 name 字段的自定义消息未注释,则验证将在提交时崩溃。