回复框 获得焦点、窗口滑动到指定位置。
在写SpringBoot BBS遇到的一个问题是,如果回复一个人帖子的时候,虽然可以手动滑到回复栏,但是窗口并不能自动滑动回复栏的那段 高度y。
我们需要 监听(Listener)根据监听打开回复栏,这很重要。 监听这段我遇到了一个小的bug。 耗费了2天左右终于找到错误了。具体来说图片是这样的。
点击 **回复条 ,无论帖子有多长立刻跳转到texteara这个输入框。
起初遇到的问题是总是监听 不到是谁的帖子来打开的表单 于是在Bootstrap 框架查找折叠菜单里边有一个关于监听的信息。
具体链接是 官方网站 关于折叠与展开 Collapse
这是我写的
//展开时候触发
$(document).ready(function () {
// alert("................")
$('#textareay').on('shown.bs.collapse',function () {
alert("触发。。。。。。。。。。。。。")
})
//按钮切换 折叠与展开的状态
$('#button2').on('click',function () {
$('#collapseExample').collapse('toggle');
})
})
很简单但是出现了bug。 没法监听到折叠与展开。
于是找到了具体的原因排查
jquery.js引入重复了。引入重复的jquery.js导致了 折叠无法监听,具体原因并不知道,但是排查后确实是这样。
当js监听到折叠(Collapse)后我们就可以利用jquery在获得焦点了
当时还不明白 jquery .on(). 是如何引入参数的. 后来明白了。
//.on('事件','参数','执行')
$('#xxxx').on('click','data',function(e){
var data=e.data
})
获得焦点的时候注意要创建 一个集合 Array()去push所有的想要监听的id。
然后迭代集合来监听到集合中的id了。
for (var r=0;r<forumArray.length;r++){
$("#textarea"+forumArray[r]).on('shown.bs.collapse',forumArray[r],function (e) {
// alert("调用 show 方法立即触发"+e.data+"--------------------------");
var element=document.getElementById("text_back"+e.data);
//y轴稍微往下一点可以获得全景。否则只能显示以上距离,而不是让它居中
element.scrollTo(0,300);
element.focus();
})
}