Я создал очень простую тестовую страницу, чтобы воспроизвести проблему, с которой я сталкиваюсь в своем приложении. Извините, если это выглядит слишком сложным.
Страница ASPX
<body>
<form id="form1" runat="server">
<asp:TextBox ID="tb" runat="server"></asp:TextBox>
<asp:Button ID="btnOk" runat="server" text="OK" Width="60px" UseSubmitBehavior="true" OnClientClick="saveAmendments();" />
</form>
В page_load в коде позади я добавляю атрибут onchange в текстовое поле
if (!IsPostBack)
{
tb.Attributes.Add("onchange", "addSaveDetails('abc###123###456###test###abc###');");
}
}
Который отображается следующим образом
<body>
<form name="form1" method="post" action="TestJP.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUi3er8ht8oaCZzy2..." />
</div>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwKOoa..." />
</div>
<input name="tb" type="text" value="testtt" id="tb" onchange="addSaveDetails('abc###123###456###test###abc###');" />
<input type="submit" name="btnOk" value="OK" onclick="saveAmendments();" id="btnOk" style="width:60px;" />
</form>
Так что, если я изменю значение в текстовом поле и щелкну где-нибудь еще на экране, функция AddSaveDetails срабатывает. Затем нажмите на кнопку и сработает saveAmendments. Однако, если вы измените текст, а затем сразу же нажмете кнопку (а не где-то еще на экране первым), и сработает только первая (onchange) функция. Событие onClick никогда не происходит. Вызываемый js не делает ничего, кроме предупреждения. Что может помешать событию всплыть до последнего звонка?