jQuery在单个元素上验证errorPlacement

hig*_*gsy 7 jquery jquery-validate

感觉之前已经问过这个问题,但似乎没有问题可以解决我的问题,所以请提前道歉.

因为我使用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"} });
Run Code Online (Sandbox Code Playgroud)

而不是:

$('#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"} });
Run Code Online (Sandbox Code Playgroud)

但是,当我添加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"} });
Run Code Online (Sandbox Code Playgroud)

但那仍然没有奏效.如何设置一个元素的位置?

在此先感谢higgsy

dea*_*noj 19

这里有一些对我有用的代码......

errorPlacement: function(error, element) {
if (element.attr("name") == "pdfEmailAddress")
    {
        error.insertAfter("ul.slinks");
    }
    else
    {
        error.insertAfter(element);
    }
}
Run Code Online (Sandbox Code Playgroud)