【发布时间】:2013-01-02 09:07:53
【问题描述】:
我正在使用 JSF 创建一个界面,如果第二个尚未设置,我希望一个文本字段的值提供一秒钟的默认值。关键代码如下所示:
<h:outputScript>
function suggestValue2() {
var value2 = document.getElementById('value2').value;
if (value2 == "") {
document.getElementById('value2').value = document.getElementById('value1').value;
}
}
</h:outputScript>
<h:inputText
id="value1"
onblur="suggestValue2();" />
<h:inputText
id="value2" />
问题是这实际上不起作用。这两个输入元素的实际 ID 以一些 JSF 生成的值作为前缀,这会阻止 getElementById 调用。对我来说,完成我在这里想要完成的事情的最佳方式是什么?
编辑: 我应该注意,这将出现在一个复合组件中,它最终可能会在一个页面上出现多次。 JSF 动态设置实际 ID 表示期望的行为。
【问题讨论】:
-
解决此问题的最简单方法是在表单中使用
prependId="false"。另一种方法是使用表单 id 和组件 id 找到它,如myFormId:value1,建议 here。
标签: javascript jsf composite-component