Существует недокументированный способ.Это зависит от того, что Microsoft не меняет название своих методов javascript, используемых для проверки на стороне клиента, но, к счастью, это изящно ухудшается, то есть не приведет к краху вашего сайта, если Microsoft что-то изменит.
Как минимум, вам нужно хранитьуказатель на исходную функцию, затем перезаписать функцию, которую вызывает Microsoft.
var pointerToMicrosoftValidator = ValidatorUpdateIsValid;
ValidatorUpdateIsValid = function() {
pointerToMicrosoftValidator();
// do something after Microsoft finishes
}
Поскольку вы хотите делать что-то только в случае неудачной проверки, вам следует проверить, является ли страница действительной после возврата из вызова:
var pointerToMicrosoftValidator = ValidatorUpdateIsValid;
ValidatorUpdateIsValid = function() {
pointerToMicrosoftValidator();
if (Page_IsValid) {
alert("Passed Validation");
} else {
alert("Failed Validation");
}
// do something after Microsoft finishes
}
Я обнаружил, что важно проверить, использовался ли валидатор на той странице, на которую я рассчитывал, в случае, если кто-то из моей команды удалил валидатор, не удаляя мой javascript.Поэтому я добавил проверку:
if (window.ValidatorUpdateIsValid) {
alert("page with validator");
}
Наконец, я хотел убедиться, что моя функция была создана после того, как Microsoft создала их код, поэтому я включил определение в вызов jquery.ready.Затем я могу вызвать метод после проверки, заменив «предупреждение после».Вы должны удалить все предупреждения, прежде чем начать работу с этим.
$(document).ready(function() {
//intercept microsoftValidator
if (window.ValidatorUpdateIsValid) {
alert("page with validator");
var pointerToMicrosoftValidator = ValidatorUpdateIsValid;
ValidatorUpdateIsValid = function() {
alert("before");
if (window.pointerToMicrosoftValidator) {
pointerToMicrosoftValidator ();
if (Page_IsValid) {
alert("Passed Validation");
} else {
alert("Failed Validation");
}
}
alert("after");
}
}
});