使用带有jquery表单验证的组。怎么用?

使用带有jquery表单验证的组。怎么用?,jquery,jquery-validate,Jquery,Jquery Validate,我一直在查看jquery表单验证插件()的可用选项列表。我想了解组选项是如何工作的。官方(?)网站上唯一可用的代码是: // Use a table layout for the form, placing error messages in the next cell after the input. $("#myform").validate({ groups: { username: "fname lname" }, errorPlacement: function(e

我一直在查看jquery表单验证插件()的可用选项列表。我想了解选项是如何工作的。官方(?)网站上唯一可用的代码是:

// Use a table layout for the form, placing error messages in the next cell after the input.
$("#myform").validate({
  groups: {
    username: "fname lname"
  },
  errorPlacement: function(error, element) {
     if (element.attr("name") == "fname" 
                 || element.attr("name") == "lname" )
       error.insertAfter("#lastname");
     else
       error.insertAfter(element);
   },
   debug:true
 })

我知道他们正在创建一个名为“username”的组,该组将两个元素组合成一种形式:“fname”和“lname”,但groupd是如何使用的?事实上,我的第一个问题是:这些小组是做什么的?我认为这是为了指示插件将组中的元素作为单个单元进行处理,并在任何元素触发错误时显示单个错误(例如,如果使用规则元素将两个文本框标记为所需,并且如果两个或两个文本框中的任何一个缺少值,则如果两个元素有错误,则显示一个错误标签,而不是两个),但我一直在尝试使用几个示例,但未能以这种方式使其工作。那么,它们是用来做什么的?我应该如何使用它们?

组选项所做的工作的总和是只为组内的所有内容报告一条错误消息。在给定的示例中,如果未对
fname
进行分组>lname
和这两个元素都是必需的,那么您将收到两条错误消息。对于组,您只会收到一条。组的两个元素仍然是必需的

听起来您似乎正确理解了这一点,但很难说为什么您不能让该示例正常工作。使用此HTML:

<form id="myform">
  First Name: <input type="text" name="fname" id="fname"/><br>
  Last Name: <input type="text" name="lname" id="lname"/><br>

    <input type="submit"/>
</form>​
我觉得还可以:

我帮助某人的一个更复杂的例子是:

最后,该问题的“组”部分要求选中一组复选框中的一个复选框,如果不选中,则只需要一条消息。

谢谢,Ryley。我不知道我做错了什么,但该示例现在正在运行。但是,请注意,我已将代码移动到母版页,该组不再工作。这似乎与当控件在母版页中时,.Net更改窗体中控件名称的方式。你知道我必须对组中控件的名称使用什么吗?我尝试了
control.ClientID
control.UniqueID
,但都不起作用。没关系。我找到了答案。现在我想更改错误消息。现在我想更改“我得到的是默认的“此字段是必需的。”。我如何做到这一点?我尝试了
消息:{credentials:“我的自定义消息”。},
,但它不起作用。顺便说一句,credentials是我的组的名称。@CesarVinas-您仍然必须按组的每个元素引用错误消息。因此您需要
消息:{fname:{required:'我的自定义邮件。}}
$("#myform").validate({
    rules: {
        fname: { required: true },
        lname: { required: true }
    },
  groups: {
    username: "fname lname"
  },
  errorPlacement: function(error, element) {
     if (element.attr("name") == "fname" 
                 || element.attr("name") == "lname" )
       error.insertAfter("#lname");
     else
       error.insertAfter(element);
   }
 })​