-2

这是我的 jsf 表:

<h:dataTable value="myBean.rows" var="b">
    <h:column>
    <div class="slider-range-min">                               
        <h:inputHidden id="buildingId" value="#{b.buildingId}" />
        <h:inputHidden id="amount" value="#{b.amount}" />
    </div>
   </h:column>
</h:dataTable>

现在,可以说,我可以通过 jQuery 在 JavaScript 中访问上面的“div”:

$(this).

我可以通过inputHidden这种方式访问​​第一个值:$(this).children[0].innerHTML,但我的目标是通过 获取此hiddenInput字段id(buildingId),因为这些顺序hiddenInputs可以更改,因此通过访问children[0]可能不再有效。如何做到这一点?

(13:52:12 16.03.2013)

嗯,没有你的解决方案不起作用。这是我的 JavaScript 代码:

 $(function() {
            $( ".slider-range-min" ).slider({
              range: "min",
              value: 37,
              min: 0,
              max: 700,
              stop: function( event, ui ) {
                  var buildingId = $(this).find('#buildingId').val();

                  console.log(buildingId);

如您所见,每个 div 都是一个 JQuery UI 滑块。控制台打印“未定义”。在 html 文档中,此表中的这些输入之一显示为 id:“foodTableForm:foodTable:0:buildingId”。因此,如您所见,这些 id 因表而被修改。

4

3 回答 3

0

根据这个答案,如果 ah:inputHidden被多次使用,实际的 HTML 将如下所示:

<input type="hidden" id="form:0:hidden" name="nameofyourform:uniquenumber:buildingId" value="value" />

假设this是对 div 的引用,您应该能够做以下两件事之一:

var buildingId = $(this).find("input[name*='buildingId']").val();

*= 是“包含”选择器。另一种选择是查看源代码并弄清楚命名的工作原理。如果唯一 id 在某种程度上等同于表中的行索引,您可以找到表的行索引并构建您的 id:

var rowId = $(this).closest('tr').index(); // add or subtract if the id of the field is off by a certain number...

var buildingId = $("#yourform:" + rowId + ":buildingId").val();
于 2013-03-16T12:35:15.090 回答
0
$(this).find('#buildingId').val()  // #{b.buildingId}
于 2013-03-16T12:35:34.630 回答
0

您可能不知道生成的 id,但您确实知道它以buildingId结尾(至少应该如此)。

因此,当您可以通过访问 div 时,$(this)您可以使用 获取值$(this).find("[id$='buildingId']"),其中的$意思是“以”结尾。

也许您必须替换idname.

于 2013-03-16T13:01:43.860 回答