событие onclick не запускается кнопками ввода внутри пользовательского элемента управления

#c# #javascript #.net-4.0

#c# #javascript #.net-4.0

Вопрос:

Я обновил свой .Сетевое веб-приложение для использования Framework 4.5, после обновления все кнопки ввода (не asp: Buttons) перестали запускать код javascript onclick, это происходит только на тех кнопках, которые находятся внутри пользовательского элемента управления (.ascx).

Просто для справки, пользовательские элементы управления не загружаются ни динамически, ни внутри панелей обновления.

Мои кнопки выглядят следующим образом

 <input id="cb" onClick="myfunc()" type="button" value="Close" />
  

Мои пользовательские элементы управления включены на страницу следующим образом

 <cc:actionbar id="theActionBar" runat="server"></cc:actionbar>
  

и функция javascript, которая также включена в пользовательский элемент управления, является

 function myfunc() {

    if (confirm("Before closing, please make sure you saved any changes.nAre you sure you want to close?") == true) {
        __doPostBack('theActionBar:theClose', '');
    }


}
  

это отлично работает в Framework 3.5 и предыдущих версиях.

есть идеи, почему это происходит??? или как я могу это решить?? Я попробовал несколько предложений, которые нашел в Интернете, и, похоже, ничего не работает.

Заранее спасибо. .

Комментарии:

1. Всякий раз, когда у меня возникает такая проблема, я изучаю выполнение javascript. Если javascript выдает ошибку во время загрузки страницы, это приведет к остановке всех скриптов, предназначенных для запуска после загрузки. Используя что-то вроде firebug, посмотрите, есть ли какие-либо ошибки javascript на вашей странице.

Ответ №1:

Я не вижу очевидной причины, но рассматривали ли вы возможность упрощения вашего подхода, чтобы избежать пользовательского javascript и жестко закодированной ссылки на событие обратной передачи? Вы можете получить точно такое же поведение с помощью ASP.NET OnClientClick свойство кнопки:

     <asp:Button runat="server" ID="btnClose" Text="Close" OnClick="btnClose_Click" OnClientClick="return confirm('Before closing, please make sure you saved any changes.nAre you sure you want to close?')" />
  

Возврат false из кода или функции OnClientClick предотвращает обратную передачу.

Переключение на этот подход может быть предпочтительным и может даже решить вашу проблему, если это как-то связано со ссылкой на событие обратной передачи.

Комментарии:

1. Я пробовал это, и это не работает. страница отправляется обратно, но не выполняет код javascript.