2016-09-11 111 views
0

使用引導應用程序的佈局,我一直在試圖讓一個元素的值,但不能這樣做,我有嘗試像的XPages:如何獲得元素值CSJS

XSP.getElementById("#{id:elementName}").value 
$("#{id:elementName}").val() 
x$("#{id:elementName}").val() 
dojo.byId("#{id:elementName}").value 

但非幾個碼四個工作,我如何從客戶端得到元素的價值

回答

2

2事情要檢查。

  1. XSP.getElementById(「#{id:elementName}」)代碼是否正確地找到該元素?注意:您應該在此處使用服務器端控件ID,而不是任何其他屬性,例如名稱將不起作用。如果你正在嘗試按名稱做,那麼你應該使用另一種方法。

  2. 你試圖得到什麼類型的元素?如果它是一個文本輸入,那麼你可以使用.value的,但如果它是一個選擇,或者一些其他類型的控制它可能是一個不同的方法/屬性

要檢查你正在尋找正確的元素試試這個(在CSJS按鈕事件):

var el = XSP.getElementById('#{id:serverSideControlId}'); 
console.log(el); 

點擊按鈕,然後檢查你的JavaScript控制檯在瀏覽器中,你應該看到某種信息的控制檯上代表你的元素如:

<input type="text" name="view:_id1:inputText1" id="view:_id1:inputText1"> 

如果找不到元素那麼你的ID必須是錯的,你會看到null

一旦你確定你所得到的元素,那麼你可以嘗試使用XSP.getFieldValue(節點)函數,我認爲它裏面有一些智能來正確地找到值取決於元素的類型。

// Note that you pass in the element that you retrieved already, and not the id 
var val = XSP.getFieldValue(el); 

這裏是一個inputText的工作例如:使用

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 

    <xp:inputText id="inputText1" value=""></xp:inputText> 

    <xp:button value="Get Element Value" id="button1"> 
     <xp:eventHandler event="onclick" submit="false"> 
      <xp:this.script><![CDATA[ 

     var el = XSP.getElementById('#{id:inputText1}'); 

     // Check your javascript console in your browser 
     console.log(el); 

     var val = XSP.getFieldValue(el); 

     // Check the contents of the value 
     console.log(val); 

     ]]></xp:this.script> 
     </xp:eventHandler> 
    </xp:button> 


</xp:view> 
+0

與一個按鈕工作正常,但是當我用腳本塊返回null,則使用它在兩個打印\t \t \t \t \t <![CDATA [ 的console.log!(」 1「) \t變種EL = XSP.getElementById( '#{ID:inputText1}'); console.log(el); console.log(XSP.getFieldValue(el)); ]]> \t \t \t

+0

,可能與時機做,文件可能不是準備好了,所以你可能無法得到的元素。 如果您將這些語句包裝在XSP.addOnLoad(function(){<< YOURSTATEMENTSHERE >>})中,該怎麼辦? 這種方式直到文檔準備好纔會運行。 你想讓你的代碼運行的事件是什麼? –