2009-05-20 2 views
25

Как подключить событие click к кнопке и предотвратить обратную передачу?jQuery предотвращение обратной передачи при нажатии кнопки

Код, который у меня есть, кажется, не работает.

$('#btnNext').click(function() { 
     return false; 
    }); 
+0

Смотрите это: [Как удалить обработчик события] (http://jquery.open2space.com/node/23) И это: [лучший способ удалить обработчик событий в jquery?] (http://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler-in- jquery) –

+0

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

ответ

54
$('#btnNext').click(function(e) { 
     e.preventDefault(); 
    }); 
+2

Я заметил, что это не работает из-за рендеринга asp.net. Моя кнопка получает визуализацию с помощью javascript: __ doPostBack («Любые идеи о том, как избавиться от этого?» –

+0

Измените '$ ('# btnNext')' на это: '$ ('# <% = btnNext.ClientID% > ') '. По умолчанию ASP.Net использует свое собственное идентификационное имя ... поэтому, используя свойство ClientID, вы можете получить фактическое имя для ссылки. –

+0

Добавление к User434917's answer: Encosia имеет хорошую запись на этом [здесь ] (http://encosia.com/button-click-handlers-ajax-premature-submission/) - (манипуляторы нажатия кнопок, AJAX и преждевременная подача) – amorin

16

Я работал с кнопкой и обнаружил, что если вы хотите, чтобы предотвратить кнопку делать авто-постбэк, необходимо указать тип, как «кнопка». Например:

<button id="saveButton">Save</button> 

--this сгенерирует автоматический постбэк (протестировано в IE)

<button type="button" id="saveButton">Save</button> 

--this не будет

Надежда это помогает кому-то.

+1

Элегантный, простой и не требует никакого js. Это не только решило мою проблему, но и сделало так что это не раздувало мою кодовую базу. Спасибо! –

+0

@JoeWerner проблема в том, что некоторые разработчики используют элементы управления ASP вместо необработанного HTML. Некоторые разработчики ленивы, я знаю. В любом случае это работает только для тех, кто использует Raw HTML для создания веб-страницы. – GoldBishop

0

внутри тег кнопки, используйте type = "Button", чтобы предотвратить пост.

2

в ASP.Net для предотвращения постбэков на кнопку использование нажмите preventDefault функции()

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title>WebForm1</title> 
     <script src="js/jquery-2.2.2.js" type="text/javascript"></script> 
     <script> 
      $(document).ready(function() { 
       $("#btnshow").click(function (e) { 
        e.preventDefault(); 
        $("#Label1").show(); 
       }); 
       $("#btnhide").click(function (e) { 
        e.preventDefault(); 
        $("#Label1").hide(); 
       }) 
      }); 
     </script> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
     <div> 

     </div> 
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
      <asp:Button ID="btnshow" runat="server" Text="Show" /> 
      <asp:Button ID="btnhide" runat="server" Text="Hide" /> 
     </form> 


    </body> 
    </html> 
+0

Это, пожалуй, лучший практический подход, поскольку он относится непосредственно к .Net quandary. В некоторых сценариях вы также должны обрабатывать назначение идентификатора динамического управления в ожидании среды. – GoldBishop

Смежные вопросы