jQuery使用JSF自动完成

jQuery使用JSF自动完成,jquery,jsf,Jquery,Jsf,我已经用JSF开发了jQuery autocomplete,它工作得很好,但是当我添加h:form时,它就不工作了 这是我的密码。 /*自动完成*/ $(函数(){ var availableTags=“#{instrumentBean.instrumentList}”; $(“#标记”).autocomplete({ 资料来源:availableTags }); }); 符号: 使用上面的代码,autocomplete工作正常,但当我将h:inputbox放入h:form中时,它不工

我已经用JSF开发了jQuery autocomplete,它工作得很好,但是当我添加
h:form
时,它就不工作了

这是我的密码。


/*自动完成*/
$(函数(){
var availableTags=“#{instrumentBean.instrumentList}”;
$(“#标记”).autocomplete({
资料来源:availableTags
});
});

符号:
使用上面的代码,autocomplete工作正常,但当我将
h:inputbox
放入
h:form
中时,它不工作。如果不将其放入
h:form
中,我就无法将其值提交给JSF支持bean。请给我一些有价值的想法来纠正这个错误


提前感谢

我不确定这是否是原因,但我使用JSF,通常表单中字段的id是在表单id前面加上组件id。因此,您应该尝试使用(如果您的
内)


JSF按照以下步骤向DOM中的命名空间组件发出。组件具有
prependId
属性,如果您想对此进行一些控制。

这里发生的事情是因为您没有在
标记中指定
prependId=“false”
标记的id自动生成,并在id的开头添加前缀(即客户端标识符)

您可以将
标记中的prependId属性设置为'false',这将保留用户插入的id,并消除html标记中JSF自动生成的id。您应该在
标记中使用
prependId=“false”

你是怎么做到的

 <h:form id="yourForm" prependId="false">
    <h:inputText id="textId" />
    <h:commandButton action="#{yourBean.addtoList}" value="ADD" >
    </h:commandButton>
 </h:form> 

JQuery将始终搜索您在JQuery代码中指定的确切id。 就是这样,

<script type="text/javascript">        
$(function() {
  var insTags = #{insBean.insList};       
  $("#textId").autocomplete({
     source: insTags 
  });
});
</script>

$(函数(){
var insTags=#{insBean.insList};
$(“#textId”).autocomplete({
资料来源:insTags
});
});

您可以使用类似
jQuery(“.className”).autocomplete()的伪css类名,而不是将id与jQuery一起使用

因此,您必须将此类应用于自动完成的div,如:

<div class="className"> ..
。。

我插入了h:inputHidden,并使用java脚本将其设置为值。然后,它的工作,因为我想。这是我在编写JavaScript/jQuery代码时的代码,您不能查看JSF源代码,而是查看其生成的HTML输出(在浏览器中打开页面,右键单击并查看源代码)。@Nicola Peluchetti hy,请问instrumentList是什么类型的?我用LinkedList试过,autocomplete不允许这样做。JSF生成的ID与您在xhtml模板中所做的不同。最好是使用浏览器中的调试工具查看元素。(例如Firefox的Firebug)hy,请问instrumentList是什么类型的?我用LinkedList试过了,autocomplete不允许这样。嘿,伙计,我只需要把我的bean包装成
”{instrumentBean.instrumentList};“
你错过了吗?这与问题的JSF方面无关。
 <h:form id="yourForm" prependId="false">
    <h:inputText id="textId" />
    <h:commandButton action="#{yourBean.addtoList}" value="ADD" >
    </h:commandButton>
 </h:form> 
<script type="text/javascript">        
$(function() {
  var insTags = #{insBean.insList};       
  $("#textId").autocomplete({
     source: insTags 
  });
});
</script>
<div class="className"> ..