jQuery在指定自定义消息时验证奇怪的错误

时间:2013-09-12 01:29:16

标签: jquery forms jquery-validate

我有一个用于创建产品记录的表单,其中包含(用户控制的)动态条目(即产品可以有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 here)。但是,您会注意到验证中有两个注释掉的部分提供自定义消息。如果包含这些,则一旦引用任何一个字段中存在值,则提交按钮将返回错误。

“{”error“:”Shell表单不验证{'html_initial_name':u'initial-js_lib',...“

据我所知,语法是正确的,方法是正确的。谁能看到我哪里出错?

(我意识到我可以通过为每个元素创建data-msg-required =“?? xx ??”属性以其他方式解决问题,但这有点不优雅且冗长。)

有什么想法吗?

Here is another jsfiddle显示只有一组选项的表单。已启用价格字段的自定义消息,但是,如果取消注释名称字段的自定义消息,则验证将在提交时崩溃。

1 个答案:

答案 0 :(得分:0)

将您的插件升级到最新版本。 (1.11.1)