I’m using jQuery with the validators plugin. I would like to replace the ‘required’ validator with one of my own. This is easy:
jQuery.validator.addMethod('required', function(value, element, param) { return myRequired(value, element, param); }, jQuery.validator.messages.required);
So far, so good. This works just fine. But what I really want to do is call my function in some cases, and the default validator for the rest. Unfortunately, this turns out to be recursive:
jQuery.validator.addMethod('required', function(value, element, param) { // handle comboboxes with empty guids if (someTest(element)) { return myRequired(value, element, param); } return jQuery.validator.methods.required(value, element, param); }, jQuery.validator.messages.required);
I looked at the source code for the validators, and the default implementation of ‘required’ is defined as an anonymous method at jQuery.validator.messages.required. So there is no other (non-anonymous) reference to the function that I can use.
Storing a reference to the function externally before calling addMethod and calling the default validator via that reference makes no difference.
What I really need to do is to be able to copy the default required validator function by value instead of by reference. But after quite a bit of searching, I can’t figure out how to do that. Is it possible?
If it’s impossible, then I can copy the source for the original function. But that creates a maintenance problem, and I would rather not do that unless there is no ‘better way.’
That’s exactly what should work.
This should work too: (And the problem with
thisis solved)