OnClientClick与PostBackUrl无法同时使用解决方案

<asp:Button ID="Button1" runat="server" Text="下一步" OnClientClick="return CheckForm1(document.form1);" PostBackUrl="http://www.mzwu.com/send.aspx" />

运行后页面源代码如下:

<input type="submit" name="Button1" value="下一步" onclick="return CheckForm1(document.form1);WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", false, "", "http://www.mzwu.com/send.aspx", false, false))" id="Button1" />

可见"return CheckForm1(document.form1);"后背后的脚本根本就不再执行了,所以PostBackUrl也就失去了作用,解决方法是不使用PostBackUrl,在脚本CheckForm1动态改变表单的action属性的。

经测试发现把Button改为LinkButton也可以:

<asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="http://www.mzwu.com/send.aspx" OnClientClick="return CheckForm1(document.form1);">下一步</asp:LinkButton>

运行后页面源代码如下:

<a onclick="return CheckForm1(document.form1);" id="LinkButton1" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("LinkButton1", "", false, "", "http://www.mzwu.com/send.aspx", false, true))">下一步</a>

可惜LinkButton是链接,不过我们可以用CSS将其外观改为按钮样式!

最后一种方法就是不用服务器端控件,将Button改为<input type="submit" name="Button1" value="下一步" onclick="return CheckForm1(document.form1);">,一样在CheckForm1中改变表单action属性也是可以的。

评论: 0 | 引用: 0 | 查看次数: 6852
发表评论
登录后再发表评论!