Я пытаюсь заменить обработчик события JavaScript onclick в ASP.NET, который добавляется к элементу управления кнопки при использовании элементов управления проверки. Вот что выводится в HTML из ASP.NET в этом сценарии:
<input type="image" name="ibSubmit1" id="ibSubmit1" src="button-green-submit.gif" onclick="showProgress1();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ibSubmit1", "", true, "Group1", "", false, false))" style="border-width:0px;" />
Я выглядел довольно пристально, и, к сожалению, кажется, что нет способа изменить функциональную серверную часть до того, как она будет введена на страницу.
Поскольку я разрабатываю элемент управления и хочу, чтобы он был неинвазивным и самодостаточным, и мне интересно получить параметр validationGroup объекта WebForm_PostBackOptions, представляется, что самым простым решением было бы используйте JavaScript для замены имени функции WebForm_DoPostBackWithOptions моей пользовательской функцией-оболочкой и оставьте всю остальную информацию о параметрах без изменений - тогда я смогу извлечь интересующую меня информацию, вызвать мои пользовательские функции и затем перенаправить вызов в WebForm_DoPostBackWithOptions.
ПРИМЕЧАНИЕ. Я использую jQuery для создания своей пользовательской функции, поэтому, если есть более простой способ сделать это с помощью jQuery, я рассмотрю этот вариант.
Вот код, который я пытался заменить обработчиком события onclick (не работает):
$('[onclick*=WebForm_DoPostBackWithOptions]').each(function() {
var txt = this.onclick;
txt = txt + '';
txt = txt.replace('WebForm_DoPostBackWithOptions','ml_DoPostBackWithOptions');
this.onclick = eval(txt);
});
Используя alert (), я убедился, что текст корректно изменяется, однако независимо от того, использую ли я функцию eval (), обработчик onclick, похоже, не распознает его как JavaScript.
Я думал об использовании регулярного выражения для получения значения validationGroup, но похоже, что оно будет гораздо более элегантным и гибким, если я смогу заставить его работать ...
Примечание. Если у моего элемента управления есть способ опросить страницу, он найдет все кнопки, которые отправит обратно (независимо от того, какие они кнопки), чтобы я мог получить их. на стороне сервера свойств, это также то, что я рассмотрю.