【问题标题】:Using groups with jquery form validation. How?使用带有 jquery 表单验证的组。如何?
【发布时间】:2013-01-03 20:40:02
【问题描述】:

我一直在查看可用于 jquery 表单验证插件 (http://docs.jquery.com/Plugins/Validation/validate#toptions) 的选项列表。我很想了解 groups 选项的工作原理。官方 (?) 网站上唯一可用的代码是:

// 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”,但是如何使用该分组?实际上,我的第一个问题是:这些组是做什么用的?我认为这是指示插件将组中的元素作为一个单元处理,并在任何元素触发一个错误时也显示一个错误(例如,如果两个文本框被标记为必需,则使用 rules 元素,如果两个元素中的任何一个或两个元素中缺少一个值,那么如果两个元素有错误,则显示一个错误标签而不是两个),但我一直在尝试几个例子,但无法以这种方式工作。那么,它们是干什么用的?我应该如何使用它们?

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    groups 选项所做的总和是只为组内的所有事物报告一条错误消息。在给定的示例中,如果您没有将 fnamelname 分组并且两者都是必需的,那么您将收到两条错误消息。与组,你只得到一个。该组的两个元素仍然是必需的。

    听起来您理解正确,但很难说为什么您没有让该示例起作用。使用此 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>​
    

    还有这个验证码:

    $("#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);
       }
     })​
    

    我觉得没问题:http://jsfiddle.net/ryleyb/cbJj6/

    我帮助某人的一个更复杂的例子在这里:Using the jQuery validate plugin to check if one or more checkboxes (with different names) are selected
    最终,该问题的组部分要求选中一组复选框中的一个复选框,如果没有,则只需要一条消息。

    【讨论】:

    • 谢谢,赖利。我不知道我做错了什么,但这个例子现在正在工作。但是,要知道我已将代码移至该组不再工作的母版页。似乎它与.Net在母版页中更改表单中控件名称的方式有关。你知道我必须为组中的控件名称使用什么吗?我试过control.ClientIDcontrol.UniqueID,但都没有。
    • 没关系。我想到了。现在我想更改错误消息。现在我得到了默认的“这个字段是必需的。”。我怎么做?我试过messages: {credentials: "My custom message."},,但它不起作用。顺便说一句,credentials 是我组的名称。
    • @CesarVinas - 您仍然必须参考组中每个元素的错误消息。所以你需要messages: { fname: { required: 'My custom message.' } }
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2017-05-17
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2020-08-09
    相关资源
    最近更新 更多