XPages:How获取元素值CSJS

XPages:How to get element value CSJS

使用 Bootstrap 应用程序布局,我一直在尝试获取元素的值但无法这样做,我尝试了几种代码,例如

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

但是这四个都没有工作,我如何从客户端获取元素的值

2 项检查。

  1. XSP.getElementById("#{id:elementName}") 代码是否正确找到了元素?注意:您应该在这里使用服务器端控件 Id 而不是任何其他 属性 例如名称 将不起作用。如果你想通过名字来做,那么你应该使用另一种方法。

  2. 您要获取什么类型的元素?如果它是一个文本输入那么你可以使用 .value 但是如果它是一个 select 或者一些其他类型的控件它可能是一个不同的 method/property

要检查您是否正确找到了元素,试试这个(在 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(node) 函数,我认为它有一些聪明之处可以正确根据元素类型查找值。

// 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>