NET应用程序,我已经插入了一个调用Javascript函数(OnClientClick
事件)和VB.NET函数(OnClick
事件)的按钮
<asp:Button OnClientClick="jsfunction() " OnClick="vbfunction" Text="Submit" runat="server" />
问题是当我点击按钮时,它会刷新页面并删除文本框的内容。
我尝试在return false;
事件上插入OnClienClick
,但它没有执行OnClick事件。
如何避免重新加载页面?
P.S。:在Javascript函数的末尾打开一个新窗口window.open(newWindow.aspx)
,但我希望第一页保留用户在文本框中插入的值。
提前致谢:)
答案 0 :(得分:5)
你需要在两点使用return语句。
OnClientClick="return jsfunction();"
function jsfunction()
{
//
return false;
}
OR,你可以在函数调用之后返回false。
OnClientClick="jsfunction(); return false;"
注意如果您想有条件地进行回发,那么您需要返回true或false。
OnClientClick="return jsfunction();"
function jsfunction()
{
if(conditionForPostBack)
return true;
else
return false;
}
答案 1 :(得分:2)
或者您可以禁用提交行为。默认情况下,asp.net将按钮呈现为提交按钮。如果禁用提交行为,则会将按钮呈现为按钮类型
<asp:Button UseSubmitBehavior="false" OnClientClick="jsfunction() " OnClick="vbfunction" Text="Submit" runat="server" />
但是使用此代码,它不会触发服务器端事件“OnClick”
答案 2 :(得分:0)
如果您不打算使用C#Codebehind功能触发按钮,那么您不需要使用asp:Button。因此,您可以使用常规html。
<button id='btn_1' onclick='ajax_function()'>Button</button>
html按钮更容易,更快捷。如果你使用asp:button,那么你应该使用clientid()函数来捕获控件以触发ajax。
答案 3 :(得分: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"];
希望这对我的情况有所帮助。