jquery - 如何将errorPlacement用于特定元素?

时间:2010-10-27 11:52:19

标签: jquery jquery-validate errorplacement

我有复选框,后面有一个文字,例如;
[复选框]我同意

如果在提交时未单击该复选框,则显示错误信息的当前方式是(我使用errorElement:“div”);

[复选框]
此字段是必填字段 我同意**

我更愿意;
[复选框]我同意 此字段是必填字段

知道如何完成这项工作吗?

我所关注的复选框和文本元素的html包装是这样的;
[div] [复选框]我同意[/ div] [div] [/ div]

我尝试 errorPlacment:,如下所示希望仅为该元素应用它;

...            
messages: {
    usage_terms: {
        required: "Must agree to Terms of Use.",
    //errorElement: "div"
    errorPlacement: function(error, element) {
        error.appendTo( element.parent("div").next("div") );
        }
    }
}
...

这没用。任何的想法?。

2 个答案:

答案 0 :(得分:26)

errorPlacement不在消息下面(作为选项),它是一个全局选项,所以它应该是这样的:

messages: {
  usage_terms: "Must agree to Terms of Use."
}
errorPlacement: function(error, element) {
  if(element.attr("name") == "usage_terms") {
    error.appendTo( element.parent("div").next("div") );
  } else {
    error.insertAfter(element);
  }
}

这里我们只是在确定元素名称的位置时检查它,你可以做另一个检查,例如给所有行为都像这样的类,然后做element.hasClass("placeAfter")

答案 1 :(得分:0)

file html

<label for="Q008" class="control-label titular">Question text 008 by example</small></label>
<input type="text" class="form-control" name="Q008" id="Q008" maxlength="500" />
<div id="Q008error"></div>

<label class="control-label titular">Question text 009 by example</label>
<div class="controls">
    <input type="checkbox" name="Q009" id="Q009_1" value="1" />
    <label for="Q009_1">Text 91</label>
</div>
<div class="controls">
    <input type="checkbox" name="Q009" id="Q009_2" value="2" />
    <label for="Q009_2">Text 92</label>
</div>
<div class="controls">
    <input type="checkbox" name="Q009" id="Q009_3" value="3" />
    <label for="Q009_3">Text 93</label>
</div>
<div class="controls">
    <input type="checkbox" name="Q009" id="Q009_4" value="4" />
    <label for="Q009_4">Text 94</label>
</div>
<div class="controls">
    <input type="checkbox" name="Q009" id="Q009_5" value="5" />
    <label for="Q009_5">Text 95</label>
</div>
<div class="controls">
    <input type="checkbox" name="Q009" id="Q009_6" value="6" />
    <label for="Q009_6">Text 96</label>
</div>
<div id="Q009error"></div>

jquery验证文件

errorPlacement: function(error, element) {
    var elementForm = "", containerError = "";
    offset = element.offset();
    elementForm = element.attr("name");
    containerError = "#" + elementForm + "error";
    error.prependTo(containerError);
    error.addClass('message');
}