簡體   English   中英

如何在Orbeon Forms的客戶端JavaScript中獲取元素ID?

[英]How to get element id in client-side javascript in Orbeon Forms?

我是XHTML,XForm和Orbeon的新手,並且在使用Orbeon Forms中的客戶端javascript檢索HTML元素ID時遇到了一個問題。 在普通的HTML中,我只使用了getElementById函數,Orbeon的文檔提出了一個用於檢索元素值的函數 (在其術語中為控制器)。

ORBEON.xforms.Document.getValue(controlIdOrElement)

但是,使用Orbeon From(摘要)例如

<xf:bind id="fr-form-binds" ref="instance('fr-form-instance')">
  <xf:bind id="section-1-bind" name="section-1" ref="section-1">
     <xf:bind id="cvr-input-bind" name="cvr-input" ref="cvr-input"/>

  (...)

<fr:section id="section-1-control" bind="section-1-bind">
  <xf:label ref="$form-resources/section-1/label"/>
    <fr:grid>
      <xh:tr>
        <xh:td>
          <xf:input id="cvr-input-control" bind="cvr-input-bind">
            <xf:label ref="$form-resources/cvr-input/label"/>
            <xf:hint ref="$form-resources/cvr-input/hint"/>
            <xf:alert ref="$fr-resources/detail/labels/alert"/>
          </xf:input>
        </xh:td>
  (...) 

getValue函數未在任何參數變量上找到值

  • CVR-輸入
  • CVR-輸入控制
  • CVR-輸入綁定

以字符串形式給出。

當我檢查生成的表單時,我發現input元素已獲得idsection-1-control≡xf-383≡cvr-input-control ,對於getValue在上述三個變體中找不到它是有意義的。

我已經制作了一個觸發按鈕(如下所示),該按鈕可以產生預期的結果(將輸入值映射到另一個控制器/元素),但是我無法想象解決方案將不得不對代碼的各個部分進行硬編碼。元素ID。

因此,我的問題是: 在最終視圖中修改編碼ID后,如何檢索元素/控制器(或其值)?

<xf:trigger id="get-pnumbers-btn-control" bind="get-pnumbers-btn-bind">
  <xf:label ref="$form-resources/get-pnumbers-btn/label"/>
  <xf:hint ref="$form-resources/get-pnumbers-btn/hint"/>
  <xf:alert ref="$fr-resources/detail/labels/alert"/>
  <xxf:script ev:event="DOMActivate" type="javascript">
    var cvrInputElementId = "section-1-control≡xf-383≡cvr-input-control";
    var cvrOutputElementId = "section-1-control≡xf-383≡cvr-output-control";
    var cvrInput = ORBEON.xforms.Document.getValue(cvrInputElementId);
    ORBEON.xforms.Document.setValue(cvrOutputElementId, cvrInput);
  </xxf:script>
</xf:trigger>

xxf:client-id()函數解析ID並返回客戶端ID。 這可能會有所幫助。 然后,您需要以某種方式將該ID傳遞給腳本(對於即將發布的4.11來說很容易 ,但是以前要難一些)。

您還可以使用jQuery,查找id以某個字符串結尾的元素:

var clientId = ORBEON.jQuery('[id $= "cvr-input-control"]').attr('id')

有一個RFE可以改進id方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM