我有一个扩展的数据表,RICHFACES 3.3.3,启用了排序和过滤。该表是动态呈现的。根据要求,我需要在显示表格时禁用某些行(包含可编辑字段)。
我在 Javascript 函数中编写了该逻辑rowBlur()
,并在显示页面时调用它。因此,当加载表时,所需的行将按预期禁用。问题是每当我过滤/排序表时,禁用的行会再次启用。
有什么方法可以在过滤或排序发生时调用 javascript 函数?
这是代码:
HtmlExtendedDataTable dynamicDataTable = new HtmlExtendedDataTable();
dynamicDataTable.setOnkeydown("filterAllOnEnter(event)");
function filterAllOnEnter(event) {
if(event.keyCode == 13) {
jQuery(".rich-filter-input").blur();
rowblur();
return false;
} else
return true;
}
// js code////////////
<script>
function show(){
val = '${myController.mergeWorkMap}';
}
</script>
<script>
function rowblur(){
for(var i=0;i<7;i++){
var firstCol = "myForm:dynamicTable:"+i+":col0" ;
var secondCol = "myForm:dynamicTable:"+i+":col1" ;
var merge =document.getElementById(firstCol).textContent;
var work =document.getElementById(secondCol).textContent;
var obj = JSON.parse(val).mergeWorkMap;
if(!(work == obj[merge])){
var col3 = "myForm:dynamicTable:" + i + ":col3";
var col4 = "myForm:dynamicTable:" + i + ":col4";
var col5 = "myForm:dynamicTable:" + i + ":col5";
var col6 = "myForm:dynamicTable:" + i + ":col6";
document.getElementById(col3).disabled = true;
document.getElementById(col4).disabled = true;
document.getElementById(col5).disabled = true;
document.getElementById(col6).disabled = true;
}
}
}
</script>
将rowblur()
无法正常进行过滤,并且在对列进行排序时根本无法正常工作。