如何使用jQuery </p:column> </p:datatable>在同一<p:datatable> <p:column>中引用另一个元素

时间:2014-09-04 11:49:07

标签: jquery jsf jsf-2 primefaces datatable

用户在<h:inputText>字段中输入字符并按“Enter”按钮后,我会尝试打开对话框。

<h:inputText>旁边有一个<p:commandLink>,按下回车按钮后会打开对话框。

<h:inputText>位于<p:dataTable><p:column>内,每行需要相同的行为。该对话框应该根据我传递的行索引打开。

 <p:dataTable scrollHeight="100" id="resourcetable"
    value="#{myViewITBean.resourcelist}" scrollable="true"
    rowIndexVar="index" var="row">

    <p:column headerText="Del" width="10" style="width:10px">
        <h:selectBooleanCheckbox value="#{row.deleteFlag}" />
    </p:column>



    <p:column headerText="ATTUID" width="200" style="width:200px">
        <h:panelGroup
            rendered="#{myViewITBean.redercomponent == false}">
            <h:inputText value="#{row.attuid}" id="attuid"
                onkeydown="if (event.keyCode == 13)
                        var columnNumber =  $(this).index();
                    jQuery('#issuesandtasksform\\:resourcetable\\:'+columnNumber+'\\:openpopup').focus().click();" />
            <p:commandLink id="openpopup"
                actionListener="#{myViewITBean.showAttuIdSearchPopUp}"
                update=":showAttuIdSearchPopUp :growl :error">
                <f:attribute name="index" value="_#{index}" />
                <h:graphicImage library="images" name="sbox1.gif" />
            </p:commandLink>
        </h:panelGroup>


        <h:outputLabel value="#{row.attuid}" style="width:200px"
            rendered="#{myViewITBean.redercomponent == true}" />

    </p:column>

检查<h:inputText onkeydown>。 jQuery代码在每一行传递相同的索引,而我需要我选择的行的索引。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

$(this).index()返回HTML元素相对于其父元素的索引,而不是行索引。您已将行索引变量声明为rowIndexVar="index"。只需使用它。

onkeydown="if (event.keyCode == 13) $('#issuesandtasksform\\:resourcetable\\:#{index}\\:openpopup').click()"

但是,通过$.next()抓取下一个HTML元素可能更容易,因为<a>生成的HTML <p:commandLink>元素是HTML <input>的下一个兄弟由<h:inputText>生成的元素。

onkeydown="if (event.keyCode == 13) $(this).next().click()"