JQuery 验证未提取自定义消息

JQuery Validation not picking up custom messages

我有以下功能,但是当触发验证时,它显示的是股票 "This field is required." 消息,而不是我的自定义消息。

     $('#customerEnquiry')
  .validate({ // initialize the plugin
      rules: {
          "InputModel.FirstName":
              {
                  required: true
              },
          "InputModel.Surname": {
              required: true,
              minlength: 3
          },
          messages: {
              "InputModel.FirstName":
                  {
                      required: "Please Supply First Name (or initial)."
                  },
              "InputModel.Surname": {
                  required: "Please Supply Surname.",
                  minlength: "Minimum length of 3."
              }
          }
      }
  });

控制台没有错误,所以我不知道为什么没有触发消息。我能看到的唯一明显的事情是自动生成的错误标签没有选择被测试控件的全名。 (如下图)

<label class="error" for="Surname" generated="true">This field is required.</label>

因为我的 html 是自动生成的,并且数据绑定到我的模型,所以我无法控制输入控件的命名。

那么我有什么办法可以解决这个问题,还是我需要回去与 Microsoft 的不引人注目的验证作斗争,它为我提供了正确的标签,但不允许我做我希望实现的其他事情.

下面是相关内容的片段 HTML

<div class="tab-pane active" id="basic-tab">

<div class="control-group">

  <label class="control-label" for="InputModel_FirstName">Customer Forename (or Initial)</label>

    <div class="controls">

      <input name="InputModel.FirstName" class="noltmarg" id="FirstName" type="text" placeholder="Enter First name" value="" data-val-required="First Name is required" data-val="true">

    </div>
</div>
<div class="control-group">
  <label class="control-label" for="InputModel_Surname">Customer Surname</label>

    <div class="controls">
      <input name="InputModel.Surname" class="noltmarg" id="Surname" type="text" placeholder="Enter Surname" value="" data-val-required="Surname is required" data-val="true" data-val-length-min="2" data-val-length-max="30" data-val-length="At Least 2 Letters are Required">

    </div>
</div>

    ... Rest of form omitted for Brevity
</fieldset>
</div>

您放错了括号,有效地将 messages 放置在 rules 对象中...

$('#customerEnquiry').validate({ // initialize the plugin
    rules: {
        "InputModel.FirstName": {
            required: true
        },
        "InputModel.Surname": {
            required: true,
            minlength: 3
        },
        messages: {
            "InputModel.FirstName": {
                required: "Please Supply First Name (or initial)."
            },
            "InputModel.Surname": {
                required: "Please Supply Surname.",
                minlength: "Minimum length of 3."
            }
        }
    }
});

相反,messages 应该是 rules 的兄弟...

$('#customerEnquiry').validate({ // initialize the plugin
    rules: {
        // 
    },
    messages: {
        //      
    }
});

演示:jsfiddle.net/gLruabce/