获取所选查找项的ID

时间:2012-11-22 12:37:19

标签: salesforce visualforce

我正在构建一个需要填写表单的Visualforce页面。在表单中有一个查找字段来查找帐户。完成此操作后,应该进行AJAX调用以更新其他内容。必须将所选项的id传递给此JS函数。

inputField的代码如下所示:

<apex:inputField value="{!Account}" id="acct" onchange="doSomething(this.value);" />  

因此,在上面的代码中,doSomething()必须将id作为参数。在当前表单中,this.value包含所选项的名称。我可以获得ID,如果是,那该怎么办?

2 个答案:

答案 0 :(得分:3)

使用Firebug或类似工具检查生成的标记。每个查找字段由几个输入字段组成(一个是可见的,休息是隐藏的)。

example

(在我的例子中,我明确地将id属性放在顶部的所有标签上(顶点:页面,表单块,部分,最后是输入字段。如果你不这样做,你会得到它自动生成的名字)。

所以你需要做的是:

  1. this转到父标记(this.parentNode应该在纯DOM中工作,当然jQuery is always advised ;)
  2. 获取ID结尾为acct_lkold
  3. 的子输入字段

    可能“previousSibling”也会起作用吗?

答案 1 :(得分:2)

试试这个:

<script>
function doThis(obj)
{
    alert(obj.id);
}
</script>

<apex:form>
    <apex:inputField value="{!acc.name}" id="myID" onchange="doThis(this);"/>
</apex:form>

如果您需要所选的对象ID,请使用actionSupport:

<script>
function doThis(param)
{
    alert(param);
}
</script>

<apex:inputField value="{!MyObject__c.AnotherObject__c}">
    <apex:actionSupport event="onchange"
                        oncomplete="doThis('{!MyObject__c.AnotherObject__c}');"
                        reRender="none"/>
</apex:inputField>

最后如果你不能(!)使用actionSupport - 请改用actionFunction:

<script>
function doThis(param)
{
    alert(param);
}
</script>

<apex:actionFunction name="preSend"
                     oncomplete="doThis('{!MyObject__c.AnotherObject__c}');"
                     reRender="none"/>

<apex:inputField value="{!MyObject__c.AnotherObject__c}" onchange="preSend()"/>