我正在构建一个需要填写表单的Visualforce页面。在表单中有一个查找字段来查找帐户。完成此操作后,应该进行AJAX调用以更新其他内容。必须将所选项的id传递给此JS函数。
inputField
的代码如下所示:
<apex:inputField value="{!Account}" id="acct" onchange="doSomething(this.value);" />
因此,在上面的代码中,doSomething()
必须将id作为参数。在当前表单中,this.value
包含所选项的名称。我可以获得ID,如果是,那该怎么办?
答案 0 :(得分:3)
使用Firebug或类似工具检查生成的标记。每个查找字段由几个输入字段组成(一个是可见的,休息是隐藏的)。
(在我的例子中,我明确地将id
属性放在顶部的所有标签上(顶点:页面,表单块,部分,最后是输入字段。如果你不这样做,你会得到它自动生成的名字)。
所以你需要做的是:
this
转到父标记(this.parentNode
应该在纯DOM中工作,当然jQuery is always advised ;))acct_lkold
可能“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()"/>