Jquery - как использовать errorPlacement для определенного элемента?
У меня есть флажок, и текст следует за ним, например:
[флажок] Я согласен
Если при отправке флажка не щелкнуть, текущий способ показать сообщение об ошибке msg у меня есть (я использую errorElement: "div" );
[флажок]
Это поле необходимо.
Я согласен **
Мне бы хотелось;
[checkbox] Я согласен
Это поле необходимо
Любая идея, как это сделать?
Оболочка html для соответствующего флажка и текстовых элементов, которые у меня есть, такая:
[div] [checkbox] Я согласен [/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") );
}
}
}
...
Это не сработало. Есть идеи?.
Ответы
Ответ 1
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")
.
Ответ 2
файл 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');
}