按键需要点击两次才能触发事件。

3

我在一个iFrame中有一个简单的ASP.NET按钮,出现了奇怪的问题:必须要点击两次才能触发事件。

<asp:Button ID="btnSaveComment" runat="server" Text="Add Comment" 
            CssClass="button"
            OnClick="btnSaveComment_Click"
            ValidationGroup="add" />

protected void btnSaveComment_Click(object sender, EventArgs e)
{            
     AddComment();
}

也许是因为您需要先进入正确的IFrame,然后才能点击该按钮。 - Jethro
1
类似的问题和有用的答案在这里 - AndroidHustle
1
@AndroidHustle:仅供参考:在评论中,您需要使用内联语法来创建超链接。您的示例代码应该是:[HERE](https://dev59.com/YkXRa4cB1Zd3GeqPusyD),它会显示为:HERE - awe
@awe 哦,太好了!你的版本让它看起来好多了!=) - AndroidHustle
2个回答

4
我怀疑当您初次点击按钮上方区域时,您正在为iframe(即其中的页面)设置焦点,而在第二次点击时,鼠标可以与按钮进行交互。
另一方面,如果页面似乎在第二次点击之前没有任何反应,则可能与页面生命周期相关,正如@AndroidHustle在回答评论中所建议的那样。
编辑:
为了测试是否聚焦于框架,请尝试通过脚本设置焦点。像以下这样的内容可能会有所帮助:
<script type="text/javascript">
    document.getElementById("iFrameId").focus();
</script>

你可以使用JavaScript/jQuery来将焦点放在iframe上。 - Grant Thomas
我通过从aspx页面中删除按钮OnClick事件并创建一个OnPageLoad方法来修复了它。 - Henry

0

我曾经遇到了同样的问题。这是我解决问题的方法:

        $("#MainContent_Button1").hover(function (event) {
            $("#MainContent_Button1").click()
        });

现在只需要1次点击,按钮就能像它应该的那样正常工作了。
<asp:Button ID="Button1" runat="server" Text="Save Payment Plan" OnClick="Button1_Click" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接