0

我手上有一个非常简单的 JSF 表单,如下所示:

<h:inputText id="number" value="#{bean.value}"
styleClass="integer" onkeyup="update()" />

我也有一个 jQuery 选择器,如下所示:

jQuery(document)
        .ready(
                    jQuery(".integer")
                            .keydown(
                                    function(event) {
                                        //do your stuf


        });

现在,这个函数被很好地触发了,直到我围绕这个输入更新容器。顺便说一下,这是一个 ui:repeat。update() 方法只刷新一个标签。更新后,在我重新加载页面之前,永远不会触发该功能。这个jquery包含在head部分的文件中,但是更新后仍然存在,但是没有触发功能?更新后如何让它再次工作?

4

2 回答 2

1

正如其他人已经回答的那样:当您更新容器时,事件处理程序不再附加,您需要重新附加它。

但是,另一种选择是使用 jquery的 on()方法。

所以使用这样的东西(虽然未经测试):

jQuery(document)
    .ready(
        $(document).on("keydown", '.integer', function (event) {
            //do your stuf
    }));
于 2013-05-27T10:12:08.280 回答
0

更新后这不起作用,因为元素不再绑定事件,因此您应该创建一个 Javascript 函数来解决此问题:

<script type="text/javascript">
function test(){
jQuery(".integer")
                            .keydown(
                                    function(event) {
                                        //do your stuf


        });
};
jQuery(document)
        .ready(test();
              );      
</script>

组件更新你的目标组件应该调用这个test()函数,比如:

<p:commandButton oncomplete="test();" update=":COMPONENT_ID_HERE" ..../>
于 2013-05-27T01:38:12.770 回答