【问题标题】:jQuery Validation - Using multiple errorLabelContainerjQuery 验证 - 使用多个 errorLabelContainer
【发布时间】:2010-09-28 22:22:20
【问题描述】:

我有一个包含四个不同字段集的表单。对于 jQuery 验证,我希望将每个字段集中输入的错误放在特定字段集顶部的错误块中。例如:

<fieldset id="contact">
  <legend>Contact Information</fieldset>
  <ul id="errors_contact" class="messages"></ul>
  <!-- input elements -->
</fieldset>

<fieldset id="financial">
    <legend>Financial Information</legend>
    <ul id="errors_financial" class="messages"></ul>
    <!-- input elements -->
</fieldset>

这可以通过 jQuery 验证来完成吗?

【问题讨论】:

    标签: javascript jquery validation jquery-validate


    【解决方案1】:

    它不能具体使用errorLabelContainer,代码中有一个errorLabelContainer的设置/存储,但是你可以使用the errorPlacement and wrapper options来实现效果你想要的,例如:

    $("form").validate({
      wrapper: "li",
      errorPlacement: function(label, elem) {
        elem.closest("fieldset").find(".messages").append(label);
      }
    });
    

    不是标准的.insertAfter()(通常将&lt;label&gt;放在它所带的元素之后),而是将其包装在&lt;li&gt;&lt;/li&gt;中,并将其附加到.messages容器中,用于当前&lt;fieldset&gt;

    【讨论】:

    • 谢谢,我参与其中。我仍然在错误中得到
    • @Matt - 通常你想要然后......所以点击错误会将你带到元素,你想要这个吗?
    • 哦,对,当然。我在页面上的 CSS 使用 display: 块作为标签。我只是将其更改为内联 .messages。
    • 实际上,display: block 正在实际元素中设置,但我仍然可以调整 CSS。
    • @Matt - 如果你想要别的东西,你可以更改errorElement,但我会坚持使用&lt;label&gt; 并修复单独的样式问题....error 类是申请里面有display: block;
    【解决方案2】:

    我是这样做的:

    我有一个必须验证多个控件的表单 - 但我想要一个错误区域 - 一条消息用于所有 - 一行。

    默认如果你使用errorLabelContainer,它会将验证作为“附加组件”——即多个验证会在错误标签中创建许多行。 我注意到一件事 - 如果它的 labelcontainer 高度小于 30px,它会第二次创建一个新的空行。我不知道为什么。

    在我的例子中,它是一个标签——当然,它也可以是一个 div。在我的 HTML 中有这个(假设你有 jQuery validation.js 和 base):

    Myform 是表单的名称 - 然后是不同的 HTML 控件 - 任何类型 - 例如:

    INPUT id=theNameofcontrol type=checkbox name=theNameofcontrol validate=required:true

    然后是错误信息的容器(不知道如何让它看起来像 HTML :)

    label id=errorlabel name=errorlabel style=font-size:1.3em;height:30;color:red; /label

    在表单的 onclick 函数中,我将空消息作为错误消息放入,如果表单无效则输入消息,如果无效则返回 false(所以我不发布它。)

    当然,您可以只填写每条自定义消息 - 但我希望无论有多少错误都只有一行。

    $("#MyForm").validate(<br>
    {<br>
    errorLabelContainer:"#errorlabel",<br>
    messages : <br>
        {theNameofcontrol: {required: "" },<br>
        theNameofcontrol2: {required: "" },<br>
        theNameofcontrol3: {required: "" }<br>
        }   <br>
    );<br>
    <br>
     if(! $("#MyForm").valid())<br>
    {<br>
    $("#errorlabel").html("My message when not all contols are valid!");<br>
    return false;<br>
    }
    

    希望这对您有所帮助。如果您有一个用于组中所有“对象”的容器,您应该能够对字段集执行相同的操作。

    验证您使用的一个控件:

    $("#MyForm").validate({errorLabelContainer:"#errorlabel",messages :{theNameofcontrol: {required: "This has to have a value" }}}).element("#theNameofcontrol");
    

    祝你好运

    【讨论】:

      猜你喜欢
      • 2017-10-08
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 2012-04-30
      相关资源
      最近更新 更多