2012-11-22 54 views
0

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

inputField的代码如下所示:

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

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

回答

3

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

example

(在我的例子中,我明确提出的所有标签id属性从顶部(顶点:页面,表单块,段和最后输入字段如果你不这样做,你”会得到自动生成的名称)

你需要做那么什么:

  1. this到父标签(this.parentNode应以纯DOM工作当然jQuery is always advised ;)的)
  2. 并取得编号为孩子输入栏acct_lkold

结局可能是“previousSibling”将工作吗?

+0

好的,我现在通过不同的渠道发现,像这样的解决方法确实是唯一的方法。我现在已经实现了这样的东西(略有不同,但是同样的想法)。 –

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()"/> 
+0

我认为这将得到输入元素的id,而不是所选对象的id。 –

+0

我已经更新了我选择的对象ID的代码 – mast0r

+0

第二个选项可能有效,但有一些原因(我不记得它)我们无法使用actionSupport ...但这是一个不错的选择。 –