我知道我们可以在 xforms-ready 事件中填充隐藏控件:
<xf:action event="xforms-ready" type="javascript">
var vProtocol = window.location.protocol;
var vSystem;
if (vProtocol == 'file:') { vSystem = 'Yes' } else { vSystem = 'No' };
ORBEON.xforms.Document.setValue(ORBEON.fr.API.findControlsByName("SystemType")[0],vSystem);
</xf:action>
当我们在控件内使用 xPath 来查询 SystemType 中的值时,我们得不到任何值。但是,如果我使 SystemType 控件可见,那么一切都会按预期工作。
那么我怎样才能拥有一个隐藏控件,并且仍然检索值?
提前非常感谢
皮特A
您无法使用 JavaScript 更改只读或隐藏控件的值。这是因为,在网络上,浏览器中运行的 JavaScript 不能被“信任”,即恶意用户也可以在 JavaScript 中完成的操作。一般来说,您不希望用户能够更改只读或隐藏控件的值。
如果在您的情况下这不是问题,您可以使用常规字段并使用 CSS 隐藏它,例如通过在自定义 CSS 类中添加
xforms-hidden
。这样,控件将在视觉上隐藏,但仍显示在页面上,这将允许您使用 JavaScript 设置其值。