用JS清空textarea

mizuho_2006 2012-01-15 04:50:28
每次点“重置”按钮后页面焦点都会跑到最上方,用户正在发帖,点重置按钮想清空内容重新输入,可是点了按钮还得拉滚动条到页面下方(文本域的输入在页面最下方)。有什么办法可以点重置按钮后清空文本域,页面焦点不发生变化?是不是要用到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()");
}
...全文
1758 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mizuho_2006 2012-01-18
  • 打赏
  • 举报
回复
问题已经解决了,谢谢大家。

因为服务端控件默认类型为提交表单,所以会刷新页面。
设置按钮的UseSubmitBehavior属性为false后正常。
mizuho_2006 2012-01-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yy_lxk 的回复:]
document.getElementById("<%='newtextarea'.ClientID %>");

服务器控件 和加了runat="server" 的都要用上面的 进行去值
<asp:Button ID="btnsubmit" runat="server" Text="发表" />
[/Quote]

newtextarea 是文本域,并不是服务器控件。我的button才是服务器控件。
专心做码农 2012-01-18
  • 打赏
  • 举报
回复
ie8 中也有debug 可以调试js脚本

一步步做着看哪一步错了

debug 好像要下载
专心做码农 2012-01-18
  • 打赏
  • 举报
回复
document.getElementById("<%=newtextarea.ClientID %>");

多了2个引号

专心做码农 2012-01-18
  • 打赏
  • 举报
回复
document.getElementById("<%='newtextarea'.ClientID %>");

服务器控件 和加了runat="server" 的都要用上面的 进行去值
<asp:Button ID="btnsubmit" runat="server" Text="发表" />
chenlin1019 2012-01-18
  • 打赏
  • 举报
回复
lz,你调试下看看,我估计你页面刷新了。
试下在page_load时间里面加这么句:page.MaintainScrollPositionOnPostBack=true;记录客户端滚动条的位置。
myleihao_88 2012-01-17
  • 打赏
  • 举报
回复
清空后让焦点在文本域就可以了啊
document.getElementById('newtextarea').focus();
mizuho_2006 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 p2227 的回复:]
你用一些http分析工具看看页面有无提交,如果有,那就查一下怎么让表单不提交,例如return false什么的。
[/Quote]

分析工具是类似httpwatch之类的吗
ASP.NET服务端控件的button不能设置type,不会默认就是submit吧,那岂不是点哪个按钮都提交了。。我点前面的发表按钮也是重新焦点移动到页面最上方,我的发表按钮onclick事件还什么都没写。
 <asp:Button ID="btnsubmit" runat="server" Text="发表" />
p2227 2012-01-16
  • 打赏
  • 举报
回复
你用一些http分析工具看看页面有无提交,如果有,那就查一下怎么让表单不提交,例如return false什么的。
mizuho_2006 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yuanxiao27 的回复:]
JScript code


<script type="text/javascript">
function ResetText(){
document.getElementById('newtextarea').Value = '';
document.getElementById('newtextarea').focus();
……
[/Quote]

试过了,这样不行。
mizuho_2006 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 free_wind22 的回复:]
这个用普通input就可以了

HTML code

<input type="button" value="重置" onclick="ResetText()" />
[/Quote]

这样是好了,可是我想用服务器控件实现不行吗?
不用HTML控件加runat="server",就用ASP.NET的服务端控件。
可能是要向服务器发出请求,服务器再相应返回页面造成的。
疯狂的驴子 2012-01-16
  • 打赏
  • 举报
回复
  
<script type="text/javascript">
function ResetText(){
document.getElementById('newtextarea').Value = '';
document.getElementById('newtextarea').focus();
}
</script>


这样再重置后就自动聚焦到输入框了。
2012-01-16
  • 打赏
  • 举报
回复
这个用普通input就可以了

<input type="button" value="重置" onclick="ResetText()" />

mizuho_2006 2012-01-15
  • 打赏
  • 举报
回复
试过了,用OnClientClick和在后台添加属性是一样的效果,页面焦点直接跳转到最上方。
虽说清空功能是实现了,但是还要拖滚动条到最下面。。
p2227 2012-01-15
  • 打赏
  • 举报
回复
你不要通过ASPX内置的功能实现就用,说不定页面已经提交过一次,


试一下这样:
<asp:Button ID="btnsubmit" runat="server" Text="发表"  OnClientClick="ResetText()"/>


 protected void Page_Load(object sender, EventArgs e)
{
//btnreset.Attributes.Add("onClick", "ResetText()"); //清空
}

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧