我想更新我的组件值evry 10 keyup,所以我写了以下代码:
<h:body>
//***************************JAVAScript function**************
<SCRIPT LANGUAGE="JavaScript">
function fnc(){
length=document.getElementById("aa").value.length;
if(length == 10)
{
document.getElementById("aa").value ="";
}
}
<ui:composition template="commonLayout.xhtml">
<ui:define name="content">
<section id="main" class="column">
<h4 class="alert_info">Scannez les bonbonnes puis cliquez sur
enregistrer :</h4>
<div class="Saut20px">
<h:form id="form">
<p:panel id="panel" header="Register">
<br />
<p:focus context="panel" />
<p:growl id="msgs"></p:growl>
<h:outputLabel value="Code Barre :" />
//*****************call function in onComplete******
<p:inputText id="aa" value="#{bonBonneManagedBean.sel}">
<p:ajax event="keyup" update="koko msgs" oncomplete="fnc()"
listener="#{bonBonneManagedBean.ajouterSelected(bonBonneManagedBean.sel)}" />
</p:inputText>
但是呼叫不起作用,如果你能帮我找到错误,请提前感谢
这里没有什么问题。首先你的评论,它们可能只是存在于这个问题中,而不是代码中,所以我不会谈论它们。
正如BalusC所写,您正在使用某种奇怪的形式来定义脚本标记——我必须承认,我从未见过这样的东西。另一方面,您正在使用section
标记,正如我所知,它是HTML5标记,并且要做好准备,它在不支持HTML5的浏览器上不起作用。
您创建了AJAX事件,该事件将在输入字段上的每个keyup
事件上调用。。。嗯,这里会有很多要求。我建议你避免那样做。
您的具体问题是,您试图找到id为aa的元素,但我必须说,没有这样的元素。JSF将命名容器中的id连接起来,这样您的输入就会有像form:aa
这样的id,如果周围的页面中有更多的命名容器,可能还会有更多的id。您可以检查页面中生成的HTML代码,并查看输入组件的真实id。在另一种情况下,你可以做一些类似的事情:
<p:inputText id="aa" onkeyup="fnc(this)" value="#{bonBonneManagedBean.sel}"/>
使用此解决方案删除ajax
标签。
并将您的fnc
更改为:
function fnc(inputComponent)
{
length = inputComponent.value.length;
if(length == 10)
{
inputComponent.value = "";
}
}
最后,我真的认为你在玩JSF和JavaScript,我真不认为这有任何可用性。
尝试使用inputtext组件的onkeyup属性;
<p:inputText id="aa" onkeyup="fnc()" value="#{bonBonneManagedBean.sel}">
祝你好运!