javascript - 在 XForms 中,使用 Orbeon,如何通过 jQuery 更新 XML 实例?

标签 javascript jquery xml orbeon xforms

当用户单击 span 元素并从 jQuery 更新当前 XML 实例时,我想在 JavaScript 中执行一些逻辑:

(我在网上看到过两个类似的问题,但从未得到解答!)

XForms:

<xhtml:span class="buttonPlusOne" id="plusVat">+</xhtml:span>
<xf:output ref="instance('submitted_instance')/TotVATAmnt"></xf:output>
<xf:input id="changeVatTotal" ref="instance('submitted_instance')/TotVATAmnt"></xf:input>

JavaScript:

$('span.buttonPlusOne').on('click', function () {
    // do some logic and increment value for 0.01
    orbeonElId = $(this).siblings('#changeVatTotal').children('input').attr('id');
    // alert(orbeonElId) produces right id (changeVatTotal$xforms-input-1)
    // alert(newValue) produces 0.02 (for example)
    ORBEON.xforms.Document.setValue(orbeonElId, newValue);
});

我可以看到 Orbeon 发布数据(Firebug),但 XML 实例没有更新(输入不会更新输出 - 即使它们共享相同的“ref”属性)。

最佳答案

我认为您将 html 元素的 id 与 xf:input 元素的 XForms id(id 属性)混淆了。

Orbeon 文档 shows an example :在 ORBEON.xforms.Document.setValue() 函数调用中使用的 id 是(服务器端)XForms 元素的 id。因此,在您的示例中,它是 changeVatTotal,而不是(客户端)html 输入元素 changeVatTotal$xforms-input-1 的 id。这就是为什么 Firebug 中显示的请求对 XForms 实例没有影响:服务器端 XForms 引擎找不到 id 为 changeVatTotal$xforms- 的 xf:input 元素input-1,因此它不知道如何处理该请求。

这也意味着您(通常)不需要计算目标元素的 id,而只需使用 xf:input 的“普通”XForms id 属性值即可。

或者:

是否可以在 XForms 中完全处理“加号”按钮?您可以使用 xforms:trigger control并包括 xforms:setvalueDOMActivate 事件执行的操作:

<xf:trigger>
    <xf:label>+</xf:label>
    <xf:setvalue
        ev:event="DOMActivate"
        ref="instance('submitted_instance')/TotVATAmnt"
        value="0.01 + instance('submitted_instance')/TotVATAmnt" />
    <.... more actions ...>
</xf:trigger>

我认为这个解决方案比在客户端和服务器端完成一些工作更稳定。

关于javascript - 在 XForms 中,使用 Orbeon,如何通过 jQuery 更新 XML 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10548695/

相关文章:

javascript - 有没有办法将 Jupyter 笔记本集成到我的 Web 应用程序中

JQuery 输入值仅限数字和小数

php - 在 AJAX 成功时显示成功消息

xml - 可以用多种可能的复杂类型重载 XSD 元素吗?

javascript - HTML <col> "width"属性在不同的浏览器中产生不同的结果?

javascript - 谷歌地图显示灰色框而不是 map

javascript - Angular 2 不更新由第三方库修改的输入值

c# - 跟踪大型 XML 文件的加载进度

java - 如何使用 java dom 从 xml 中删除 namespace ?

javascript - NodeJS Selenium Chrome Webdriver 连接被拒绝