Javascript 手写标题搜索(输入文本)在滚动时间歇性清除
在我添加到热标题的文本输入字段中维护搜索词时遇到问题。如果我输入一个搜索词并向下滚动,这个词通常会被清除。我认为这可能与滚动时的热头冻结行为有关 复制步骤Javascript 手写标题搜索(输入文本)在滚动时间歇性清除,javascript,jquery,handsontable,Javascript,Jquery,Handsontable,在我添加到热标题的文本输入字段中维护搜索词时遇到问题。如果我输入一个搜索词并向下滚动,这个词通常会被清除。我认为这可能与滚动时的热头冻结行为有关 复制步骤 带有一些数据和列标题的热容器。在每个/任何列的列标题中包含HTML输入文本元素 在输入文本框中输入一些文本 向下滚动页面,直到清除数据。如果未看到效果,请重新加载页面并重试,直到观察到行为。 注意:您可能需要减小页面大小,以便进行适当的滚动以观察正在清除的数据 我认为我的问题涉及: 但是,我遵循了以下指导原则: 您还可以将HTML放入行标题和
$(文档).ready(函数(){
var colHeaders=[
“ID”,
“名称”,
'地址'
];
风险值数据=[
{id:1,名称:'Ted Right',地址:'A'},
{id:2,姓名:'Frank Orient',地址:'B'},
{id:3,姓名:'Joan Well',地址:'C'},
{id:4,姓名:'Gail Little',地址:'D'},
{id:5,姓名:'Michael Fair',地址:'E'},
{id:6,姓名:'Ted Right2',地址:'A'},
{id:7,姓名:'Frank Honest2',地址:'B'},
{id:8,姓名:'Joan Well2',地址:'C'},
{id:9,姓名:'Gail Polite2',地址:'D'},
{id:10,姓名:'Michael Fair2',地址:'E'},
{id:11,姓名:'Ted Right3',地址:'A'},
{id:12,姓名:'Frank Honest3',地址:'B'},
{id:13,姓名:'Joan Well3',地址:'C'},
{id:14,姓名:'Gail Polite3',地址:'D'},
{id:15,姓名:'Michael Fair3',地址:'E'},
{id:16,姓名:'Ted Right4',地址:'A'},
{id:17,姓名:'Frank Honest4',地址:'B'},
{id:18,姓名:'Joan Well4',地址:'C'},
{id:19,姓名:'Gail Polite4',地址:'D'},
{id:20,姓名:'Michael Fair4',地址:'E'},
{id:21,姓名:'Ted Right3',地址:'A'},
{id:22,姓名:'Frank Honest3',地址:'B'},
{id:23,姓名:'Joan Well3',地址:'C'},
{id:24,姓名:'Gail Polite3',地址:'D'},
{id:25,姓名:'Michael Fair3',地址:'E'},
{id:26,姓名:'Ted Right4',地址:'A'},
{id:27,姓名:'Frank Honest4',地址:'B'},
{id:28,姓名:'Joan Well4',地址:'C'},
{id:29,姓名:'Gail Polite4',地址:'D'},
{id:30,姓名:'Michael Fair4',地址:'E'},
];
var$container=$(“#热”);
var searchParams='';
var searchObj={};
searchObj[0]={key:'searchID',类名:'.searchID',已保存:null};
searchObj[1]={key:'searchName',className:'.searchName',已保存:null};
searchObj[2]={key:'searchAddress',类名:'.searchAddress',保存:null};
$container.handsontable({
数据:数据,
colHeaders:colHeaders,
上下文菜单:false,
});
//loadSavedSearchTerms();
searchHandlers();
函数searchHandlers(){
对于(i=0;i<3;++i){
$(document).on('keydown',searchObj[i].类名,函数(e){
如果(e.which==13){//Return按下
fetchSearchParams();
}
});
}
}
/*
函数loadSavedSearchTerms(){
对于(i=0;i<3;++i){
if(searchObj[i].saved){//如果以前存储了搜索组件
$(searchObj[i].className).each(函数(j,obj){
obj.value=searchObj[i]。已保存;
});
}
}
}
*/
函数fetchSearchParams(){
searchParams='';
//从所有输入字段获取值
//注意,由于热beaviour导致DOM中的重复,所以要复杂得多
对于(i=0;i<3;++i){
//由于每个输入值的热返回数组重复
searchObj[i].arrayHoT=$(searchObj[i].className).map(函数(){
返回此.value;
}).get();
//保存此输入的任何术语以备将来使用,例如排序/滚动ajax调用(此处不包括)
if(searchObj[i].arrayHoT[0])
searchObj[i].saved=searchObj[i].arrayHoT[0];
else if(searchObj[i].arrayHoT[1])
searchObj[i].saved=searchObj[i].arrayHoT[1];
if(searchObj[i].已保存){
searchParams+='&'+searchObj[i]。键+'='+searchObj[i]。已保存;
}
}
log('最终搜索参数:'+搜索参数);
//过滤数据-带参数的AJAX调用
//返回getData(searchParams).done(loadHOT);
}
});代码>
搜索值-滚动维护
我描述的问题已确认为一个bug
来自handsontable的AMBudnik:
当我们添加renderAllRows:true
时,问题就停止了,所以我猜
与视口有关
请参阅以获取任何更新