Подтвердить что ты не робот

Дважды нажмите кнопку

Кажется, что иногда (но не всегда) мое событие нажатия кнопки запускается дважды. Тот факт, что это случается иногда, но не всегда, действительно меня озадачивает. Вот моя кнопка:

<button id="btnSave" onserverclick="btnAddUser_Click" name="btnSave" type="submit" style="font-size:11px;font-family:Verdana;font-weight:bold;" runat="server">Save</button>
4b9b3361

Ответ 1

У меня была такая же проблема, и мне потребовалось некоторое время, чтобы понять это! Если вы добавите к вашей кнопке type = "button", это, похоже, устранит проблему.

Ответ 2

Я только что наткнулся на эту же проблему и хотел указать, что удаление "Handles btnSave.Click" из вашего события не позволит ему дважды вызываться. Например, используйте это в коде позади:

Protected Sub btnSave_OnClick(ByVal sender As Object, ByVal e As System.EventArgs)
    'Do Something
End Sub

Вместо этого:

Protected Sub _btnSave_OnClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
    'Do Something
End Sub

Ответ 3

Вместо этого используйте собственную кнопку ASP.NET.

<asp:Button id="btnSave" runat="server" OnClick="btnAddUser_Click"  
     style="font-size:11px;font-family:Verdana;font-weight:bold;" Text="Save" />

Ответ 4

Похож на проблему с подключением обработчиков событий. http://geekswithblogs.net/TimH/archive/2006/10/23/94874.aspx

Попробуйте, если вы можете просто обработать события в своем конце. Кроме того, проблема может быть связана с типом = "Отправить". Проверьте, не изменилась ли эта кнопка на кнопку только.

Ответ 5

Если вы используете код позади, не используйте OnClick в теге ASP, <button id="btnSave" name="btnSave" type="submit" style="font-size:11px;font-family:Verdana;font-weight:bold;" runat="server">Save</button>

Ответ 6

Одна из возможных причин:
Проверьте объявление своей кнопки в источнике .aspx. Если у вас есть 'runat=server' и onclick="button1_click", и у вас есть обработчик событий в вашем коде (т.е..aspx.vb), это приведет к тому, что событие будет запущено дважды. Вот пример в xxx.aspx:

<asp:Button id="button1" onclick="button1_Click" runat="server" Text="Click Me!"></asp:Button>

Это объявление должно быть:

<asp:Button id="button1" runat="server" Text="Click Me!"></asp:Button>

Удачи!

Ответ 7

Решение уже упоминалось в другом ответе. Используйте type = "button" вместо отправки

Вот пример кода

    <span class="input-group-btn">
      <button id="btnLoadCustomerFile" class="btn btn-default" type="button" runat="server" onserverclick="btnLoadCustomerFile_Click" >Load</button>
       </span>

И внутренний код для обработки по клику

 protected void btnLoadCustomerFile_Click(object sender,EventArgs e)
    {
        LoadCustomerFile();
      }

Ответ 8

Правильный способ (на странице веб-формы ASP.NET), как уже указывалось двумя другими участниками, заключается в добавлении к элементу атрибута type = "button" и ассоциировать a onserverclick обработчик делегата событий.

Например:

<button type="button" id="btnSave" runat="server" onserverclick="btnSave_ServerClick" class="btn btn-success btn-label">
    <i class="fa fa-save"></i>Save
</button>

Надеюсь, что это поможет.

Ответ 9

Думаю, я просто решил найти решение. Удалите name="btnSave" или измените его на "btnSave1". Он будет работать.

Ответ 10

У меня была такая же проблема, но совсем другая причина. Я устанавливаю свойство defaultbutton панели контейнера для кнопки, запускаемой дважды. После удаления свойства DefaultButton "из Asp: Panel проблема решена.

Ответ 11

Просто пришлось снова вернуться в старый школьный ASPX и обнаружил эту проблему.

Моя форма была настроена следующим образом.

<asp:UpdatePanel ID="login" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Panel ID="forgotPassword" runat="server" DefaultButton="lbtnSendLoginDetails" Visible="False">
            <asp:LinkButton ID="lbtnSendLoginDetails" runat="server" >

Код был

Protected Sub lbtnSendLoginDetails_Click(sender As Object, e As EventArgs) Handles lbtnSendLoginDetails.Click

Ответ для меня заключался в том, чтобы удалить атрибут DefaultButton из Panel и добавить

TabIndex="4" 

в LinkButton.

Ответ 12

У меня была похожая проблема. Я использовал Я изменил это на не работал.

Но когда я изменил это на это сработало.

Спасибо Этот пост помог мне.

Ответ 13

В моем случае это происходит со мной, когда я использую Chrome, но не в Firefox

Ответ 14

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

https://mzulkamal.com/blog/asp-net-web-form-html-button-tag-fires-two-times-s

Ответ 15

Если вы используете asp.net, просто используйте asp: button..... его чистый и простой. Независимо от того, какое оправдание я читаю в сети, нет смысла, что обработчик на стороне сервера должен вызываться дважды. Когда я добавляю type = "button", проблема решена. Однако форма не отправляется, когда я нажимаю клавишу ввода. Так что еще одна проблема должна быть решена. Использование кнопки asp: позаботится обо всем этом.