2016-09-11 140 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 >>})中,该怎么办? 这种方式直到文档准备好才会运行。 你想让你的代码运行的事件是什么? –