0

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

的代码inputField如下所示:

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

所以在上面的代码中,doSomething()必须获取 id 作为参数。在当前表单中,this.value包含所选项目的名称。我可以得到身份证,如果可以,怎么办?

4

2 回答 2

3

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

例子

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

所以你需要做的:

  1. this转到父标签(this.parentNode应该在普通 DOM 中工作,当然总是建议使用 jQuery ;)
  2. 并获取以 Id 结尾的子输入字段acct_lkold

可能“ previousSibling ”也会起作用?

于 2012-11-22T12:52:13.457 回答
2

Try this:

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

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

If You need the selected object id - use 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>

And finally if you can not (!) use actionSupport - use actionFunction instead:

<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()"/>
于 2012-11-22T19:17:07.590 回答