("id").val()对tr:subform标签不起作用

("id").val() not working with tr:subform tag

本文关键字:quot subform 标签 不起作用 val id tr      更新时间:2023-09-26

我正在使用apache特立尼达。我使用了一个tr:子表单标签,里面我有一些元素,如日期字段,命令按钮每个都有一个Id。现在我有了一个jquery函数,它使用('#id').val()来获取字段。但这行不通。我可以看到字段的id是"subformid:fieldid"模式,但是在jquery函数中,它不能通过val()获取值。

<tr:subform id="subform1">
<tr:outputLabel for="to_Date" value="To Date"/>
            <tr:inputDate id="to_Date"   value="#{customer.toDate }" >
            <f:convertDateTime pattern="dd-MM-yyyy"  />
            </tr:inputDate>
<tr:commandButton text="Filter" action="#{bean.action }" id="filterId"  partialSubmit="true"></tr:commandButton>
</tr:subform>

这里,日期字段的id自动变为"subform1:to_Date"。但是当我使用document.getElementById('subform1:to_Date')它返回null。这是我的jquery函数

    $(document).ready( function() {
        $("#subform1:filterId").click(function(){
            alert('filterid clicked');
            var datePrsn = "";
            datePrsn = $("#subform1:to_Date").val();
            }
});

<tr:subform>运行在服务器端,其呈现的HTML将是<tr id="...">。因此,您只需要查看服务器代码呈现的id是什么,然后仅通过id获取元素,如建议的@Pilot,例如:

document.getElementById('to_Date')

供参考:http://myfaces.apache.org/trinidad/trinidad-api/tagdoc/tr_subform.html

编辑

使用两个反斜杠('':)转义jQuery选择器中的冒号:

$('#subform1'':filterId');

尝试安装Firebug(适用于Firefox),或者使用F12(适用于Chrome或IE)并单击您想要的元素,使用这些工具您可以看到为元素生成的确切名称。

如果您有另一个元素,如tr:form或tr:table,名称将显示为formId:subFormId:elementId或tableId:0:elementId