Java 在datatable筛选器上添加onkeyup事件
我想在此代码上添加javascript事件:Java 在datatable筛选器上添加onkeyup事件,java,jsf,primefaces,datatable,onkeyup,Java,Jsf,Primefaces,Datatable,Onkeyup,我想在此代码上添加javascript事件: <p:dataTable id="tblQueues" var="q" value="#{gateBacking.listQueue}" filteredValue="#{gateBacking.filteredQueues}" rowKey="#{q.queid}" selection="#{gateBacking.selectedQueue}" selectionMode="single" widgetVar="varQueu
<p:dataTable id="tblQueues" var="q" value="#{gateBacking.listQueue}" filteredValue="#{gateBacking.filteredQueues}" rowKey="#{q.queid}"
selection="#{gateBacking.selectedQueue}" selectionMode="single" widgetVar="varQueues"
scrollable="true" scrollHeight="250">
...
<p:column headerText="License No" filterBy="#{q.fleet.licenseNo}" filterMatchMode="contains" >
#{q.fleet.licenseNo}
</p:column>
...
</p:dataTable>
但它不起作用。我该怎么做?谢谢
更新 我尝试过这个,但不起作用:
<p:column headerText="License No" filterBy="#{q.fleet.licenseNo}" filterMatchMode="contains" filterEvent="formatLicense(this)">
更新2
<p:tabView id="tabViewGate">
<p:tab id="tabCheckOut" title="Out">
<h:form id="frmOut">
<p:dataTable id="tblQueues" var="q" value="#{gateBacking.listQueue}" filteredValue="#{gateBacking.filteredQueues}" rowKey="#{q.queid}"
selection="#{gateBacking.selectedQueue}" selectionMode="single" widgetVar="varQueues"
scrollable="true" scrollHeight="250">
...
<p:column id="colLicnu" headerText="License No" filterBy="#{q.fleet.licenseNo}" filterMatchMode="contains" >
#{q.fleet.licenseNo}
</p:column>
...
</p:dataTable>
<script type="text/javascript">
$(document).ready(function(){
$("#frmOut\\:tblQueues\\:colLicnu\\:filter").keyup(function(){
//alert("Test"); //--> I tried this too but it doesn't work
if (input.value.length > 1)
{
var num = '1234567890';
var str = input.value[input.value.length-1];
var str2 = input.value[input.value.length-2];
if (num.indexOf(str) >= 0) {
if (!(num.indexOf(str2) >= 0))
input.value = input.value.substring(0, input.value.length - 1) + " " + str;
}
else if (!(num.indexOf(str) >= 0)) {
if (num.indexOf(str2) >= 0)
input.value = input.value.substring(0, input.value.length - 1) + " " + str;
}
}
input.value = input.value.replace(" "," ").toUpperCase();
});
});
</script>
</h:form>
</p:tab>
</p:tab>
...
#{q.fleet.licenseNo}
...
$(文档).ready(函数(){
$(“#frmOut\\:tblQueues\\:colLicnu\\:filter”).keyup(函数(){
//警报(“测试”);//-->我也试过了,但不起作用
如果(input.value.length>1)
{
var num='1234567890';
var str=input.value[input.value.length-1];
var str2=input.value[input.value.length-2];
如果(num.indexOf(str)>=0){
如果(!(num.indexOf(str2)>=0))
input.value=input.value.substring(0,input.value.length-1)+“”+str;
}
else如果(!(num.indexOf(str)>=0)){
如果(num.indexOf(str2)>=0)
input.value=input.value.substring(0,input.value.length-1)+“”+str;
}
}
input.value=input.value.replace(“,”).toUpperCase();
});
});
您可以通过一些jQuery魔术来实现这一点。我使用PrimeFaces 3.5来确定这个答案,但是你应该能够在你的上实现同样的结果。您需要做的第一件事是为HTML端的输入
确定生成的id
。您可以通过右键单击输入
(用于筛选该列的输入)并选择查看源代码来执行此操作
注意:我发现简单地在
、
和您感兴趣的
中添加一个id
(或者您可以在
上执行prependId=“false”
来缩短它……无论您希望什么)。然后使用此javascript(伪代码)代码
这里有一个更具体的例子。下面是我的
的一部分。我只展示相关的部分。(不要担心对象,我在玩PrimeFaces showcase)
在我这边,这段代码位于resources/javascript/jscript.js
下。因此,请记住在
中添加
更新
无论id
是用于输入的复制并粘贴所有。然后用双反斜杠转义冒号:
。根据您的代码,它应该是
#tabViewGate\\:frmOut\\:tblQueues\\:colLicnu\\:filter
#A5290\\:tabViewGate\\:frmOut\\:tblQueues\\:colLicnu\\:filter
然而,从你的评论来看,你是说id是
A5290:tabViewGate:frmOut:tblQueues:colLicnu:filter
应该如此
#tabViewGate\\:frmOut\\:tblQueues\\:colLicnu\\:filter
#A5290\\:tabViewGate\\:frmOut\\:tblQueues\\:colLicnu\\:filter
您使用的是什么版本的primefaces?谢谢。我再看一看。@Andy:Btw我试过了filterEvent=“formatLicense(this)”
,但没用。@Andy:啊,对不起,我的primefaces是2.2,JSF是2.0.2,我想你只需要直接使用js或Jquery来实现你想要的。问题是我在想怎么称呼它。对不起,我现在太困了。如果有人到那时还没有给你答案,我会再次尝试。谢谢你,但我已经试过了,也是一样的。请看更新的问题。@mrjimoy_05一秒钟。寻找一个简单的例子。@Jimoy_05先生哦,不,这不行。这只是更改发生过滤时触发的事件。使用change
代替keyup
。让我看看还能找到什么。你可以直接使用JQuery
或JS。试试这个,告诉我结果如何。嗨,安迪,非常感谢你的代码。但我已经尝试过你的解决方案,但仍然不起作用。我在Chrome中检查了inspect element
中的ID,发现:A5290:tabViewGate:frmOut:tblQueues:colLicnu:filter
。因此,我尝试将javascript上的ID替换为这个ID,但导致整个表无法过滤或排序。我已经在上面的更新2中附上了我代码的完整结构。请看一看。非常感谢你。。
A5290:tabViewGate:frmOut:tblQueues:colLicnu:filter
#A5290\\:tabViewGate\\:frmOut\\:tblQueues\\:colLicnu\\:filter