JQuery validate errorPlacement for single element

It seems like this question has been asked before, but no questions seem to fix my problem, so apologize in advance.

Since I use ASP.NET and cannot predict the name of the controls I want to test, I configure my jquery validation rules as follows:

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"} }); 

Instead

$ ('# aspnetForm'). validate ({options and rules}); // for which control names are required

The problem is that the third rule is a radio list, and the error message does not fit in the right place. It is placed immediately after the first radio exchange, whereas I want it after the last list of switches.

 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"} }); 

However, I cannot get the method to work when I add the errorPlacement parameter. I also tried the following:

 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"} }); 

But it still hasn’t worked. What can I do to set the placement of only one item?

Thanks in advance higgsy

+7
source share
1 answer

Here is the code that worked for me ...

 errorPlacement: function(error, element) { if (element.attr("name") == "pdfEmailAddress") { error.insertAfter("ul.slinks"); } else { error.insertAfter(element); } } 
+16
source

All Articles