1

我想更新我的组件值 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>

但是电话打不通,如果你能帮我找到错误,提前谢谢你

4

2 回答 2

0

尝试使用 inputtext 组件的 onkeyup 属性;

 <p:inputText id="aa" onkeyup="fnc()" value="#{bonBonneManagedBean.sel}">

祝你好运!

于 2013-02-05T15:24:17.793 回答
0

您在这里几乎没有问题。首先你的评论,它们可能只存在于这个问题中,而不是代码中,所以我不会谈论它们。

正如BalusC所写,您正在使用某种奇怪的脚本标签定义形式我必须承认我从未见过这样的东西。另一方面,您正在使用section标签,据我所知,它是 HTML5 标签,并准备好它不适用于不支持 HTML5 的浏览器。

您创建了将在输入字段上的每个事件上调用的 AJAX 事件keyup......好吧,这将是很多请求。我建议你避免这种情况。

您的具体问题是您尝试查找 id 为aa的元素,但我必须说没有这样的元素。JSF 连接来自命名容器的 ID,因此您的输入将具有这样的 id form:aa,如果周围页面中有更多命名容器,则可能还会有更多的 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,我真的看不出这有什么用处。

于 2013-02-05T21:02:19.100 回答