如何在回发asp.net按钮之前运行javascript函数?

时间:2010-05-27 16:03:24

标签: asp.net javascript

我正在使用Javascript创建DIV元素并使用onclientclick打开新页面。这非常有效。现在,我需要从服务器端写入它,并且必须在回发之前创建此元素。

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

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

要清楚,我需要在按钮的“OnClick”之前执行此操作。

更新:看起来在回发之前调用了Javascript函数,但在运行第二个回发之前元素没有更新。嗯

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

我正在javascript中创建一个div标签来打开一个新窗口。在div标签内,我使用的是数据绑定语法<%= Preview%>这样我就可以在服务器端访问这个元素了。从服务器端,我正在注入代码。

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

UPDATE!

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在这里输入代码这对你有用吗?

的Javascript

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

.NET代码

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

这应确保您要完成的工作已完成,然后将提交表单。返回false会阻止在您第一次单击按钮时提交表单,并依赖stuffYouWantToDo函数中的调用来提交表单。

答案 2 :(得分:0)

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

$(document).ready(function() {

    var execScript = $(".myButton").attr("href").replace("javascript:", "");

    $(".myButton").attr("href", "#").click(function() {
        // Add before click logic here

        eval(execScript);
    });
});

答案 3 :(得分:-1)

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