2010-05-27 82 views
5

我正在使用Javascript创建DIV元素,并使用onclientclick打开一个新页面。这很好。现在,我需要从服务器端写入它,并且必须在回发之前创建此元素。如何在回发asp.net按钮之前运行javascript函数?

如何在回发前获得javascript执行?

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

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

更新:它看起来像在回发之前调用Javascript函数,但直到我运行第二个回发时才更新元素。嗯

更新:不幸的是,这是更复杂一点,然后这个。

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

我在想这可能是一个鸡蛋问题,但不能确定。

更新!

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

+0

您在提交的页面上动态创建元素,然后需要读取您提交给服务器的数据? – R0MANARMY 2010-05-27 16:15:18

+0

如果您发布一个非常简单的例子,您可能会对此有所帮助。从阅读你的问题,这听起来像你可以使用更新面板来生成你的div的动态内容。 – 2010-05-28 21:08:44

回答

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函数中的调用提交表单来提交表单。

+0

回报错误真的会如此吗?我认为在返回false之后不会执行任何操作。我认为event.stopPropagation()会是一个更好的方法。 – 2010-05-27 16:18:24

+0

犯错,可能会有倒退。 stuffYouWantToDo();返回false; – Tommy 2010-05-27 16:25:52

1

您不必依靠服务器控件在asp.net中执行回发。您可以通过从javascript发布任何时候准备好更好地控制您的应用程序。

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

等等。而不是使用服务器控制按钮,只需调用__doPostback函数即可完成所需的所有操作。

asp.net为您提供了一个很好的方式来访问该功能 页面。GetPostbackClientEvent(我相信,但也有支持此方法对夫妇方法)如果你想使用jquery你可以做 http://msdn.microsoft.com/en-us/library/system.web.ui.page.getpostbackclientevent.aspx

0

如下:

$(document).ready(function() { 

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

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

     eval(execScript); 
    }); 
}); 
-1

无法只需添加自定义验证某处在你的形式?

+0

这不适用于验证程序。我正尝试在新窗口中创建预览页面。 – 2010-06-21 22:01:16

相关问题