之前有人问过这个问题,但似乎没有任何问题可以解决我的问题,所以请提前道歉。
因为我正在使用ASP.NET而无法预测我想要验证的控件的名称,所以我正在设置我的jquery验证规则,如下所示:
jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} });
而不是:
$('#aspnetForm')。validate({options and rules}); //需要控件名称
问题是,第三个规则是radiobuttonlist,并且错误消息没有放在正确的位置。它是在第一个单选按钮之后直接放置的,而我想在最后一个单选按钮列表之后放置它。
jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} });
但是,当我添加errorPlacement选项时,我似乎无法使该方法起作用。我也尝试了以下内容:
jQuery('#aspnetForm').validate({ errorPlacement: function (error, element) {
if (element.hasClass('sfRadioList')) {
error.insertAfter(element.parent("ul"));
}
}
});
jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} });
但那仍然没有奏效。我该怎么做才能设置一个元素的位置?
提前致谢 higgsy
答案 0 :(得分:18)
这里有一些对我有用的代码......
errorPlacement: function(error, element) {
if (element.attr("name") == "pdfEmailAddress")
{
error.insertAfter("ul.slinks");
}
else
{
error.insertAfter(element);
}
}