java - JSF2.0 - 在对话框的 onShow 事件期间无法通过 Jquery 检索对话框内的 InputTextArea

标签 java jquery jsf jakarta-ee primefaces

我的 .xhtml 页面中有以下对话框。

<p:dialog widgetVar="exampleDialog" onShow="fillTextArea()" >
    <p:tabView id="tabView">
        <p:tab id="exampleTab" title="Example">
            <p:inputTextarea id="someInputTextArea" autoResize="false"
                value="" />
        </p:tab>
    </p:tabView>
</p:dialog>

单击按钮时显示对话框。 fillTextArea javascript 函数在文档头部的脚本标记内定义。

function fillTextArea() {
    console.log(jQuery("textarea[id='someInputTextArea']")); // logs empty array []
    console.log($("[id='someInputTextArea']")); // logs empty array []
    jQuery("textarea[id='someInputTextArea']").val('xxx'); // does nothing
}

有什么问题?为什么我无法检索输入文本区域?

我没有使用 DialogonShow 事件,而是尝试:

exampleDialog.show();
fillTextArea();

以防万一。但这也不起作用。我正在尝试设置 inputTextArea 的内容。

感谢任何帮助。谢谢。

最佳答案

jQuery 在 JSF 生成的 HTML DOM 树上工作,而不是在 JSF 源代码上工作。 JSF 组件不一定生成与您在组件 ID 中指定的相同的客户端 ID(HTML 元素 ID)。它们可能以父​​ ID 为前缀 NamingContainer 成分。 <h:form><p:tabView>是这样的组件。

在网络浏览器中打开页面,右键单击并查看源代码 并找到生成的 HTML 代码 <p:inputTextarea> .它看起来像这样:

<textarea id="formId:tabViewId:textareaId">

您需要在 jQuery 选择器中准确地指定此 ID。

$("[id='formId:tabViewId:textareaId']");

另见:

关于java - JSF2.0 - 在对话框的 onShow 事件期间无法通过 Jquery 检索对话框内的 InputTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8911896/

相关文章:

ajax - CORS - 对于返回 401 的 API 请求,Ajax 错误函数将错误代码报告为 0

jquery - 将 Rails 应用加载到现有的 HTML5 页面中(使用 JQuery 或 iFrame)

java - JSF 移动/重定向到其他包含数据的页面

php - 根据第一个选择选项更改表单选择选项?

java - ICEfaces 与 RichFaces 的详细比较?

jsf - 应该在 p :tree to select a tree node and have a context menu? 上使用什么事件

java - 找不到符号: barkOnce() of location: variable d of type Object

java - ValueChangeEvent getOldValue() 为 null

java - 尝试构建一个简单的 Observer-Observable

java - 如何使用 Criteria API 根据不同的条件查找特定人员?