OnClientClick не работает на asp.net LinkButton

У меня есть asp.net linkbutton, который содержит свойство OnClientClick, однако функция внутри OnClientClick никогда не вызывается, она напрямую переходит к функции OnClick.
Ниже приведены два способа использования LinkButton как:

<asp:LinkButton ID="btn" CssClass="button" Text="Browse Thumbnail" runat="server" 
     OnClientClick="return confirm('Are you sure you want to delete?');">
</asp:LinkButton>

а также:

<asp:LinkButton ID="lnkDelete" runat="server" 
     OnClientClick="return confirm('Are you sure you want to delete this slide?');" 
     CommandName="DeleteThumbnail" CommandArgument='<%# Container.DataItemIndex %>'>
   <asp:Image ImageUrl="~/images/delete.gif" ID="imgDelete" runat="server"></asp:Image>  
</asp:LinkButton>

Оба подхода не работают.

Может ли кто-нибудь предложить какое-то решение для того же.


person Abbas    schedule 30.04.2013    source источник
comment
вы не определили OnClick в обоих этих подходах, поэтому он не может перейти в OnClick   -  person Postback    schedule 30.04.2013
comment
вы пропустили JavaScript вызов, вы должны попробовать что-то вроде этого onclick="javascript:return confirm('Are you sure you want to delete this slide?')"   -  person MethodMan    schedule 30.04.2013
comment
Я имею в виду, что это просто обратная передача без запуска события OnClientClick.   -  person Abbas    schedule 30.04.2013
comment
Ниже? не могли бы вы, пожалуйста, дайте мне знать, как? у меня двойные кавычки снаружи и одинарные внутри   -  person Abbas    schedule 30.04.2013
comment
Содержимое должно быть в двойных кавычках, а параметр должен быть одинарным. Только что опубликовал мой ответ ниже. Попробуйте и дайте мне знать.   -  person MahaSwetha    schedule 30.04.2013
comment
В объявлении скрипта нет ничего принципиально неправильного - просто попробовал его как есть, и он сработал, так что проблема, похоже, в другом. Вы уверены, что не переопределяете этот обработчик? Может быть, в настройках кода программной части Attributes["onclick"] или в javascript?   -  person Andrei    schedule 30.04.2013
comment
Нет, я нигде не объявлял никаких атрибутов из кода позади   -  person Abbas    schedule 30.04.2013
comment
@Abbas, у тебя нет окна подтверждения?   -  person Damith    schedule 30.04.2013
comment
нет, похоже, проблема только в IE, в FF (2-й подход) работает нормально. 1-й все еще есть проблемы во всех браузерах   -  person Abbas    schedule 30.04.2013
comment
Можете ли вы опубликовать HTML-код, в котором отображаются обе кнопки ссылок?   -  person Andrei    schedule 30.04.2013
comment
Ребята, вы можете увидеть страницу в действии: kb.dev.asentechdev1.com/slideshowadmin_v2.aspx, сайт требует учетные данные, вот они: имя пользователя - Developer (только для IE это .\Developer) и пароль: plmnko-09, нажмите кнопку Browse Thumbnail, это будет просто обратная передача, это кнопка ссылки   -  person Abbas    schedule 30.04.2013


Ответы (6)


Скорее всего, есть какой-то другой элемент страницы, который предотвращает запуск этого события.

Есть ли у вас какие-либо другие элементы страницы, которые могут мешать? Вы пытались удалить все остальные элементы страницы, кроме этого? Есть ли у вас вызовы AJAX, которые могут мешать? Вы пробовали это с помощью простого элемента html (не asp.net)?

Скорее всего, вы все делаете правильно в своей кнопке ссылки, но похоже, что проблема в другом.

person Ronnie Togger    schedule 01.05.2013
comment
Да, вы были правы, проблема была в другом, у меня была функция, которая предотвращала событие onclick тега привязки. - person Abbas; 03.05.2013

  OnClientClick="javascript:return confirmAction();"  

  function confirmAction() {  
      if(confirm('Are you sure you want to delete?')) {  
        // you clicked the OK button.  
        // you can allow the form to post the data.  
        return true;  
    }  
    else {  
        return false;  
        }  
    }  

реализовать Onclick на стороне сервера

 protected void lnkdelete_Click(object sender, EventArgs e)  
 {  
 }  

и если вы не хотите вызывать метод сервера, используйте этот

   OnClientClick="javascript:confirmAction(); return false;" 
person Shafqat Masood    schedule 30.04.2013
comment
Я попробовал это ‹asp:LinkButton ID=btn CssClass=button Text=Browse Thumbnail runat=server OnClientClick=javascript:return confirm('Вы уверены');›‹/asp:LinkButton› Тем не менее это тоже не работает - person Abbas; 30.04.2013
comment
сделайте функцию, как указано выше, и попробуйте - person Shafqat Masood; 30.04.2013
comment
Нет, это не работает, я сделал ниже функцию: function Navigate() { javascript: window.open(microsoft.com) ; } и OnClientClick=javascript:Navigate(), но это не работает - person Abbas; 30.04.2013
comment
OnClientClick=javascript:Navigate(); - person Shafqat Masood; 30.04.2013
comment
Я также попытался вызвать OnClientClick из Page_Load: btn.OnClientClick = javascript:return confirm('Вы уверены?') и btn.OnClientClick = javascript:Navigate(); оба не работают - person Abbas; 30.04.2013
comment
давайте продолжим обсуждение в чате - person Abbas; 30.04.2013

Поместите его в одинарные кавычки, как показано ниже,

<asp:LinkButton ID="btn" CssClass="button" Text="Browse Thumbnail" runat="server" OnClientClick="return confirm('Are you sure you want to delete?');"></asp:LinkButton>
person MahaSwetha    schedule 30.04.2013

Используйте так

 function Navigate() 
 { 
     javascript: window.open("microsoft.com"); 
     return false;
 }

и на clientclick следующим образом

OnClientClick="return javascript:Navigate()"

или даже

 function Navigate() 
 { 
     window.open("microsoft.com"); 
     return false;
 }

 OnClientClick="return Navigate()"
person शेखर    schedule 30.04.2013
comment
это будет работать. Вы проверили наличие ошибки js javascript на странице. - person शेखर; 30.04.2013

Похоже, вы отключили javascript в IE. Просто включите его, и все готово. Вы можете следить за этим сообщением, чтобы включить/отключить javascript в IE:

http://browsers.about.com/od/internetexplorertutorials/ss/disable-javascript-ie9.htm

person Santosh Panda    schedule 30.04.2013

Нет проблем с вашим методом OnClientClick, он должен вывести окно подтверждения. но вы не указали событие onclick кнопки ссылки. Таким образом, вы не сможете получить событие из кода.

Возможно, вам потребуется включить java-скрипты для вашего браузера.

Как включить JavaScript в веб-браузере?

Используете ли вы инструментарий Ajax? Обновить панель? затем вам нужно зарегистрировать скрипт с помощью диспетчера скриптов

Чтобы внедрить сценарий подтверждения из обратной передачи AJAX,

ScriptManager.RegisterOnSubmitStatement(btn, Page.GetType(), "confirm", "return confirm('Are you sure');");
person Damith    schedule 30.04.2013
comment
Javascript включен, я получаю окно подтверждения на кнопке ввода HTML, но он не работает в asp: linkbutton - person Abbas; 30.04.2013
comment
это ‹asp:LinkButton ID=lnk runat=server Text=SOMETHING OnClientClick=return confirm('вы уверены?');›‹/asp:LinkButton› работает? - person Abbas; 30.04.2013