我有一个 asp 按钮,当我单击常规 html 按钮时,我希望通过 javascript 函数单击该按钮。然而,当它到达button.click()时,没有任何效果。如果我查看调试器,函数中的其他所有内容都会正常运行,如果我自己单击 asp 按钮,它会运行我期望的代码,或者如果我在控制台中调用 joingameBtn_Click,它也会正确单击该按钮。我在循环中在页面加载时动态创建了按钮,以便每个按钮都有一个 onclick 函数,该函数传递一个唯一的 id。
function joinGameBtn_Click(campaignid) {
var temp = document.getElementById('CampaignID');
temp.value = campaignid;
var button = document.getElementById("CampaignBtn");
button.click();
}
function createFunction(id) {
return function() { joinGameBtn_Click(id); };
}
//Where the button is created
var hoverbutton = document.createElement('button');
hoverbutton.id = 'hoverbutton';
var func = createFunction(campId);
hoverbutton.onclick = func;
在阅读其他一些帖子后,我发现有时动态创建的按钮可能会出现问题,因为事件监听器未与它们绑定(bind)。一些建议提到确保文档已准备好,所以我也尝试了这一点,但没有成功。
$(document).ready(function() {
$(document).on('click', '#hoverbutton', function () {
$("#CampaignBtn").click();
});
});
编辑:这是有问题的 asp.net 按钮。
<asp:Button ID="CampaignBtn" runat="server" Text="Button" style="display:none;" OnClick="joinGame_Click" ClientIDMode="Static"/>
这里是服务器端按钮点击函数:
public void joinGame_Click(object sender, EventArgs e)
{
Session["campaignid"] = int.Parse(CampaignID.Value);
Response.Redirect("CampaignSession.aspx");
}
最佳答案
我将我的 asp 按钮更改为常规 html 按钮,这似乎解决了问题
<button onserverclick="joinGame_Click" runat="server" id="CampaignBtn" ClientIDMode="Static">Button</button>
不确定修复重复 ID 的问题是否也起到了作用。
关于Javascript按钮点击没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43618379/