簡體   English   中英

XPages-在對話框中獲取文本區域的值

[英]XPages - get value of a textarea inside a dialog

我試圖在輸入到包含在xe:dialog中的textarea中的文本上獲得句柄,但未成功。 按下XPage上的按鈕后,xe:dialog將“彈出”。 這是我的代碼:

<xe:dialog id="InputDialog5">

<xe:this.title>"Input Dialog</xe:this.title>
<xp:panel>
<xp:inputTextarea id="InputTextBox5" value="#{document1.InputTextBox5}"
cols="60" rows="4"></xp:inputTextarea>
</xp:panel>
<xe:dialogButtonBar id="dialogButtonBar15">
<xp:button value="OK" id="button37">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete" immediate="true">
<xp:this.action><![CDATA[#{javascript:
var request = facesContext.getExternalContext().getRequest();
var header = request.getHeader("Cookie");
var inputVal = @Middle(header,"InputTextBox5=",";")

setJobReferenceStatus(40,inputVal);
var redirect = "window.location='"+applicationScope.get("redirect")+"'";
facesContext.getViewRoot().postScript(redirect);}]]></xp:this.action>
<xp:this.script><![CDATA[
var inputvalue = document.getElementById("InputTextBox5").value;
alert("inputvalue = " + inputvalue);
dojo.cookie("InputTextBox5", inputvalue, { expires: 1 });
]]></xp:this.script>
</xp:eventHandler>
</xp:button>
</xe:dialogButtonBar>
</xe:dialog>

我的想法是獲取textarea的值,將其添加到dojo cookie中,使用SSJS檢索cookie值,然后將該值傳遞給SSJS函數。 但是,代碼在獲取textarea值的階段已經失敗。 “ alert(“ inputvalue =” + inputvalue);“行 未執行,對話框保持“凍結”狀態。 關於如何解決此問題的任何想法嗎?

為了從客戶端Javascript獲取文本字段的句柄,您必須知道XPages生成的客戶端ID。 因此,請改用此方法來計算CSJS中的ID:

<xp:this.script><![CDATA[
  var inputvalue = document.getElementById("#{id:InputTextBox5}").value;
  alert("inputvalue = " + inputvalue);
  dojo.cookie("InputTextBox5", inputvalue, { expires: 1 });
]]></xp:this.script>

快速瀏覽一下,我已經看到了兩個主要障礙:

a) document.getElementById(..)可能不會這樣做(實際上我從未真正嘗試過)。 我改用XSP.getElementById(..)dojo.byId(..)

b)您的textarea在運行時永遠不會擁有與設計時相同的id。 只需使用瀏覽器的源代碼查看器,您就會明白我的意思。 因此,我們必須按照以下說明為我們計算結果ID:

dojo.byId("#{id:InputTextBox5}")

然后將其轉換為客戶端對象的最終ID,以便您的客戶端腳本代碼可以找到它。

沒有查看其余的代碼,所以我無法確定其中是否還有其他潛在問題

暫無
暫無

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

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