【问题标题】:How to run a javascript function before postback of asp.net button?如何在 asp.net 按钮回发之前运行 javascript 函数?
【发布时间】:2011-02-24 17:59:57
【问题描述】:

我正在使用 Javascript 创建一个 DIV 元素并使用 onclientclick 打开一个新页面。这很好用。现在,我需要从服务器端对其进行写入,并且必须在回发之前创建此元素。

如何让 javascript 在回发之前执行?

目前,我必须按两次按钮,因为第一次点击时该元素不存在可写。

为了清楚起见,我需要在按钮的“OnClick”之前执行它。

更新:看起来在回发之前调用了 Javascript 函数,但在我运行第二次回发之前元素不会更新。嗯

更新:不幸的是它比这个更复杂。

我在 javascript 中创建一个 div 标签来打开一个新窗口。在 div 标记内,我使用数据绑定语法 以便我可以在服务器端访问此元素。从服务器端,我正在注入代码。

我认为这可能是鸡蛋问题,但不确定。

更新!

不是 Javascript 没有先运行。它是数据绑定机制,它在我能够设置它之前读取空白变量。

嗯

【问题讨论】:

  • 您在提交的页面上动态创建一个元素,然后需要在服务器端读取您提交的数据?
  • 如果您发布一个非常简单的示例来说明您正在尝试做什么,这可能会有所帮助。通过阅读您的问题,我觉得您可以使用更新面板来生成 div 的动态内容。

标签: asp.net javascript


【解决方案1】:

您不必依赖服务器控件在 asp.net 中执行回发。您可以随时通过 javascript 发布来更好地控制您的应用程序。

框架会自动生成一个名为 __doPostback(.....) 的函数,并最终在每次需要进行回发时调用它。

所以。而不是使用服务器控制按钮,你可以有一个普通的<button onclick="foo()" /> 完成所有需要的操作后,只需调用 __doPostback 函数。

asp.net 为您提供了一种访问该功能的绝妙方法 Page.GetPostbackClientEvent (我相信,但有几种方法支持这种方法) http://msdn.microsoft.com/en-us/library/system.web.ui.page.getpostbackclientevent.aspx

【讨论】:

    【解决方案2】:

    在此处输入代码这对您有用吗?

    Javascript

    function stuffYouWantToDo(){
      //do your stuff
      //then submit the .NET form
      document.forms[0].submit();
    }
    

    .NET 代码

    <asp:button ID="Button1" onClientClick="return false;stuffYouWantToDo();"/>
    

    这应该确保您想要做的事情已经完成,然后表单将被提交。 return false 会阻止在您第一次单击按钮时提交表单,并依赖于 stuffYouWantToDo 函数中的调用来提交表单。

    【讨论】:

    • return false 真的会这样吗?我认为返回 false 后不会执行任何操作。我认为 event.stopPropagation() 会是更好的方法。
    • err,可能有这些倒退。 stuffYouWantToDo();返回假;
    【解决方案3】:

    如果您想使用 jquery,您可以执行以下操作:

    $(document).ready(function() {
    
        var execScript = $(".myButton").attr("href").replace("javascript:", "");
    
        $(".myButton").attr("href", "#").click(function() {
            // Add before click logic here
    
            eval(execScript);
        });
    });
    

    【讨论】:

      【解决方案4】:

      您不能简单地在表单的某处添加自定义验证器吗?

      【讨论】:

      • 这不适用于验证器。我正在尝试在新窗口中创建预览页面。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      相关资源
      最近更新 更多