Как запустить событие нажатия кнопки из JavaScript в ASP.NET

Как запустить событие нажатия кнопки на стороне сервера из JavaScript?

Я пытался так:

document.getElementById("<%= ButtonID.ClientID %>").click();

Но бесполезно. Как мне это сделать?

10 ответов

Вы можете просто поместить эту строку в функцию JavaScript:

__doPostBack('btnSubmit','OnClick');

Или сделать что-то вроде этого:

$('#btnSubmit').trigger('click');
var clickButton = document.getElementById("<%= btnClearSession.ClientID %>");
clickButton.click();

Это решение работает для меня, но помните, что оно не будет работать, если ваша кнопка asp имеет

Visible="False"

Чтобы скрыть кнопку, которая должна быть запущена этим скриптом, вы должны скрыть ее <div hidden></div>

Я использовал приведенный ниже код JavaScript, и он работает...

var clickButton = document.getElementById("<%= btnClearSession.ClientID %>");
clickButton.click();

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

// In Server Side code
protected void Page_Load(object sender, EventArgs e)
{
    Page.GetPostBackEventReference(hiddenButton);
}

// Javascript
function SetSaved() {
    __doPostBack("<%= hiddenButton.UniqueID %>", "OnClick");
}

// ASP
 <asp:Button ID="hiddenButton" runat="server" OnClick="btnSaveGroup_Click" Visible="false"/>

Я пережил эту проблему в течение двух дней, и внезапно я понял, что я использую этот метод щелчка (для кнопки asp) в кнопке отправки (в кнопке отправки html) метода javascript...

Я имею в виду ->

У меня есть кнопка отправки html и кнопка asp:

<input type="submit" value="Siparişi Gönder" onclick="SendEmail()" />
<asp:Button ID="sendEmailButton" runat="server" Text="Gönder" OnClick="SendToEmail" Visible="True"></asp:Button>

SendToEmail () - это метод на стороне сервера в Default.aspx. SendEmail() - это метод javascript:

<script type="text/javascript" lang="javascript">
   function SendEmail() {
            document.getElementById('<%= sendEmailButton.UniqueID %>').click();
            alert("Your message is sending...");
        }
</script>

И это "document.getElementById ('<% = sendEmailButton.UniqueID%>'). Click();" Метод не работает только в Crome. Это работало в IE и Firefox.

Затем я попробовал и попробовал много способов для выполнения метода "SendToEmail()" в Crome.

Затем вдруг я изменил кнопку отправки html -> просто кнопку html вот так, и теперь она работает:

<input type="button" value="Siparişi Gönder" onclick="SendEmail()" />

Хорошего дня...

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

      <asp:Button ID="BtnQuickSearch" runat="server" Text="Search" 
OnClick="BtnQuickSearch_Click" ValidationGroup="none" />

Я должен упомянуть, что у меня было 2 другие формы с кнопками на странице, в обеих были указаны свои собственные группы проверки. Для этой кнопки не была указана группа проверки, и событие onclick просто не сработало.

Я могу заставить вещи работать так:

внутри javascript junction, который выполняется кнопкой html:

document.getElementById("<%= Button2.ClientID %>").click();

ASP кнопка внутри div:

<div id="submitBtn" style="display: none;">
   <asp:Button ID="Button2" runat="server" Text="Submit" ValidationGroup="AllValidators" OnClick="Button2_Click" />
</div>

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

 int count = cmd.ExecuteNonQuery();
 if (count > 0)
 {
   cmd2.CommandText = insertSuperRoster;
   cmd2.Connection = con;
   cmd2.ExecuteNonQuery();
   string url = "VaccineRefusal.aspx";
   ClientScript.RegisterStartupScript(this.GetType(), "callfunction", "alert('Data Inserted Successfully!');window.location.href = '" + url + "';", true);
  }

Любые идеи, почему эти строки не будут выполняться?

Вы можете заполнить скрытое поле из вашего кода JavaScript и сделать явную обратную передачу из JavaScript. Затем со стороны сервера проверьте это скрытое поле и выполните все необходимое.

document.FormName.btnSubmit.click(); 

работает для меня. Наслаждаться.

$("#"+document.getElementById("<%= ButtonID.ClientID %>")).trigger("click");
Другие вопросы по тегам