我創建了一個非常簡單的測試頁來複制我在我的應用程序中遇到的問題。如果這看起來很長,對於一些如此微不足道的事情來說很長時間。OnClick事件不會觸發
在.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除了警報之外別無其他。什麼可以阻止事件冒泡到最後的呼叫?