【问题标题】:Prevent JavaScript OnClick binded confirm() to override VB.NET Click handler防止 JavaScript OnClick 绑定的 confirm() 覆盖 VB.NET Click 处理程序
【发布时间】:2013-02-02 12:20:28
【问题描述】:

我必须解决分配给我的一些代码中的问题,问题是在page.init else statemant 中遵循 此代码:

Me.SaveChangesButton.Attributes.Add("OnClick", 
    "if (!confirm('Are you sure?')){
        return false;
     } else {
        document.getElementById('SaveChangesButton').disabled = true; 
        document.getElementById('rejectButton').disabled = true;
     }
")

覆盖此代码:

Protected Sub SaveChangesButton_Click(ByVal sender As Object, ByVal e As 
System.EventArgs) Handles SaveChangesButton.Click

问题[编辑]

  1. 如何将confirm() 绑定到按钮,使其不会覆盖我的handler 函数?
  2. 最好在代码的哪个位置绑定它?
  3. 如果我删除第二部分 else {document.getElementById('SaveChangesButton').disabled = true; document.getElementById('rejectButton').disabled = true;} 它可以正常工作,但我应该如何编写它才能继续执行 SaveChangesButton_Click,据我所知只有第二部分覆盖处理程序?
  4. 我怎样才能执行这两行 document.getElementById('SaveChangesButton').disabled = true; document.getElementById('rejectButton').disabled = true; 仍然执行 SaveChangesButton_Click 处理程序而不覆盖它?

【问题讨论】:

    标签: javascript vb.net event-handling


    【解决方案1】:

    1) 你应该使用OnClientClick:

    Me.SaveChangesButton.OnClientClick = @"
        if (!confirm('Are you sure?')) {
            return false;
        } else {
            document.getElementById('SaveChangesButton').disabled = true; 
            document.getElementById('rejectButton').disabled = true;
        }"
    

    2) 如果你在Page.Init 中绑定SaveChangesButton_Click,那么我也会设置OnClientClick

    3,4) OnClientClick 在服务器端 OnClick 之前触发(某种程度上)(当然)。这使您在触发OnClick 之前禁用您的按钮。并且OnClick 不会在禁用按钮上触发。该怎么办? 延迟禁用按钮

    Me.SaveChangesButton.OnClientClick = @"
    if (!confirm('Are you sure?')) {
        return false;
    } else {
        setTimeout(function(){
            document.getElementById('SaveChangesButton').disabled = true; 
            document.getElementById('rejectButton').disabled = true;
        }, 100);
    }"
    

    这实际上使您的问题与this one重复...

    【讨论】:

    • 谢谢,刚刚测试工作正常。但是还是用timeout感觉不对。
    • 一旦您找到其他方法,请将其发布为答案。我会很感兴趣的。
    猜你喜欢
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2017-05-29
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    相关资源
    最近更新 更多