當我點擊button時觸發SaveEqp()
有成功執行alert("執行btnSave1")跟alert("執行btnSave2")
但是Code behind只執行了btnSave2_Click()
如果我將SaveEqp()裡的執行順序對調,他只會執行最後一筆。
請問是什麼原因造成的?有什麼解決辦法嗎?
.asp程式
<script language="javascript">
function SaveEqp() {
if (true) {
alert("執行btnSave1");
$("#<%=btnSave1.ClientID%>").click();
}
if (true) {
alert("執行btnSave2");
$("#<%=btnSave2.ClientID%>").click();
}
}
</script>
<div style="display:none" >
<asp:Button ID="btnSave1" runat="server" Text="Save" OnClick="btnSave1_Click" />
<asp:Button ID="btnSave2" runat="server" Text="Save" OnClick="btnSave2_Click" />
</div>
<button class="btn btn-primary" onclick="SaveEqp();return false;" >Save</button>
.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSave1_Click(object sender, EventArgs e)
{
Response.Write("btnSave1_Click");
}
protected void btnSave2_Click(object sender, EventArgs e)
{
Response.Write("btnSave2_Click");
}
或許你可以嘗試包在同一個button event中
protected void btnSave_Click(object sender, EventArgs e)
{
// 執行原本 btnSave1_Click 的代碼
Response.Write("btnSave1_Click");
// 執行原本 btnSave2_Click 的代碼
Response.Write("btnSave2_Click");
}
同一個JavaScript函數中連續觸發兩個按鈕的點擊事件,提交了一個表單會造成postback
無論你怎麼調整兩個click()的順序,只有最後一個按鈕的事件會被觸發。
asp:Button 這類的tag就是俗稱的Server Control
https://coolmandiary.blogspot.com/2019/03/aspnetserver.html
不然可改成ajax方式去觸發後端webmethod
https://coolmandiary.blogspot.com/2021/03/aspnetjquery-ajaxjquery-sortablediv.html
這個問題~若要送兩個表單位置~
我會用 iframe 標籤 利用js改變 form 的 target action
例如
<form id="form1" target="iframe_form1" action="">
...
</from>
<iframe id="iframe_form1" style="width:0px;heught:0px"></iframe>
<script>
function SaveEqp() {
var form1 = document.getElementById("form1");
if (true) {
alert("執行btnSave1");
form1.action="123.aspx";
$("#<%=btnSave1.ClientID%>").click();
}
if (true) {
alert("執行btnSave2");
form1.action="456.aspx";
$("#<%=btnSave2.ClientID%>").click();
}
}
</script>