每次点“重置”按钮后页面焦点都会跑到最上方,用户正在发帖,点重置按钮想清空内容重新输入,可是点了按钮还得拉滚动条到页面下方(文本域的输入在页面最下方)。有什么办法可以点重置按钮后清空文本域,页面焦点不发生变化?是不是要用到Ajax技术??JavaScript代码为 <script type="text/javascript">
function ResetText(){
document.getElementById('newtextarea').Value = '';
}
</script>
HTML代码为 内容:</label><textarea rows="1" cols="1" id="newtextarea"></textarea></p>
<asp:Button ID="btnsubmit" runat="server" Text="发表" />
<asp:Button ID="btnreset" runat="server" Text="重置" />
后台C#代码为 protected void Page_Load(object sender, EventArgs e)
{
btnreset.Attributes.Add("onClick", "ResetText()");
}
function ResetText(){
document.getElementById('newtextarea').Value = '';
}
</script>
HTML代码为 内容:</label><textarea rows="1" cols="1" id="newtextarea"></textarea></p>
<asp:Button ID="btnsubmit" runat="server" Text="发表" />
<asp:Button ID="btnreset" runat="server" Text="重置" />
后台C#代码为 protected void Page_Load(object sender, EventArgs e)
{
btnreset.Attributes.Add("onClick", "ResetText()");
}
试一下这样:
<asp:Button ID="btnsubmit" runat="server" Text="发表" OnClientClick="ResetText()"/>
protected void Page_Load(object sender, EventArgs e)
{
//btnreset.Attributes.Add("onClick", "ResetText()"); //清空
}
虽说清空功能是实现了,但是还要拖滚动条到最下面。。
<script type="text/javascript">
function ResetText(){
document.getElementById('newtextarea').Value = '';
document.getElementById('newtextarea').focus();
}
</script>
这样再重置后就自动聚焦到输入框了。
这样是好了,可是我想用服务器控件实现不行吗?
不用HTML控件加runat="server",就用ASP.NET的服务端控件。
可能是要向服务器发出请求,服务器再相应返回页面造成的。
分析工具是类似httpwatch之类的吗
ASP.NET服务端控件的button不能设置type,不会默认就是submit吧,那岂不是点哪个按钮都提交了。。我点前面的发表按钮也是重新焦点移动到页面最上方,我的发表按钮onclick事件还什么都没写。
<asp:Button ID="btnsubmit" runat="server" Text="发表" />
document.getElementById('newtextarea').focus();
试下在page_load时间里面加这么句:page.MaintainScrollPositionOnPostBack=true;记录客户端滚动条的位置。
<asp:Button ID="btnsubmit" runat="server" Text="发表" />
newtextarea 是文本域,并不是服务器控件。我的button才是服务器控件。
设置按钮的UseSubmitBehavior属性为false后正常。