3

NET 应用程序,我插入了一个调用 Javascript 函数(OnClientClick事件)和 VB.NET 函数(OnClick事件)的按钮

<asp:Button OnClientClick="jsfunction() " OnClick="vbfunction" Text="Submit" runat="server" />

问题是当我单击按钮时,它会刷新页面并删除文本框的内容。

我尝试过插入return false;事件OnClienClick,但它不执行 OnClick 事件。

如何避免页面重新加载?

PS:在 Javascript 函数结束时会打开一个新窗口window.open(newWindow.aspx),但我希望第一页保留用户在文本框中插入的值。

提前致谢 :)

4

4 回答 4

6

您需要在两点使用 return 语句。

OnClientClick="return jsfunction();"

function jsfunction()
{
  //
  return false;
}

或者,您可以在这样的函数调用之后返回 false。

OnClientClick="jsfunction(); return false;"

请注意,如果您想有条件地进行回发,那么您需要返回 true 或 false。

OnClientClick="return jsfunction();"

function jsfunction()
{
  if(conditionForPostBack)
      return true;
  else
      return false;
}
于 2013-05-04T08:53:43.593 回答
2

或者您可以禁用提交行为。默认情况下,asp.net 将按钮呈现为提交按钮。如果您禁用提交行为,它会将按钮呈现为按钮类型

<asp:Button UseSubmitBehavior="false" OnClientClick="jsfunction() " OnClick="vbfunction" Text="Submit" runat="server" />

但是使用此代码,它不会触发服务器端事件“OnClick”

于 2013-05-04T08:57:07.240 回答
0

if you are not going to trigger the button with C# Codebehind function, then you dont need to use asp:Button. Therefore you can use a regular html .

<button id='btn_1' onclick='ajax_function()'>Button</button>

html button is much easier and faster. if you use asp:button, then you should use clientid() function to catch the control to trigger the ajax.

于 2013-05-04T09:40:43.417 回答
0

搜索与您相同的内容,我找到了一个补丁:

如果您调用方法服务器端,则可以使用AJAX更新面板,但这对我不起作用。但是你可以保存你想要的东西Session,所以只要 Session 持续,你就可以拥有它。

// Save at SessionParameter the elementToSave we want.
this.Session["SessionParameter"] = elementToSave;

// Retrieve the info from the Session
ElementYouNeededToSave = (TypeOfTheElement)Session["SessionParameter"];

希望这会对我的情况有所帮助。

于 2019-09-20T10:28:07.037 回答