0

フォームに入力する必要があるVisualforceページを作成しています。フォームには、アカウントを検索するためのルックアップフィールドがあります。これを行った後、他の何かを更新するためにAJAX呼び出しを行う必要があります。選択したアイテムのIDをこのJS関数に渡す必要があります。

のコードは次のinputFieldようになります。

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

したがって、上記のコードではdoSomething()、引数としてIDを取得する必要があります。現在のフォームでthis.valueは、選択したアイテムの名前が含まれています。IDを取得できますか?取得できる場合、どのように取得できますか?

4

2 に答える 2

3

生成されたマークアップをFirebugまたは同様のツールで検査します。各ルックアップフィールドは、いくつかの入力フィールドで構成されています(1つは表示され、残りは非表示になります)。

例

(私の例ではid、すべてのタグに上から明示的に属性を設定しました(apex:page、form block、section、最後に入力フィールド。これを行わないと、自動生成された名前が表示されます)。

だからあなたがする必要があること:

  1. this親タグに移動します(プレーンthis.parentNodeDOMで機能するはずです。もちろん、jQueryを常にお勧めします;)
  2. そして、Idがで終わる子入力フィールドを取得しますacct_lkold

おそらく「previousSibling」も機能しますか?

于 2012-11-22T12:52:13.457 に答える
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()"/>
于 2012-11-22T19:17:07.590 に答える