2012-11-22 5 views
0

양식을 입력해야하는 Visualforce 페이지를 작성하고 있습니다. 양식에서 계정을 조회 할 조회 필드가 있습니다. 이 작업을 완료 한 후에는 AJAX 호출을 수행하여 다른 것을 업데이트해야합니다. 선택한 항목의 ID는이 JS 함수에 전달되어야합니다.선택된 조회 항목의 ID 가져 오기

inputField에 대한 코드는 다음과 같습니다

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

그래서 위의 코드에서, doSomething() 인수로 ID를 받아야합니다. 현재 양식에는 this.value에 선택한 항목의 이름이 들어 있습니다. ID를 얻을 수 있습니까? 그렇다면 어떻게 할 수 있습니까?

답변

3

생성 된 마크 업을 Firebug 또는 유사한 도구로 검사하십시오. 각 조회 필드는 여러 입력 필드로 구성됩니다 (하나는 표시되고 나머지는 숨김).

example

는 (내 예제에서 나는 명시 적으로 상단 (정점에서 모든 태그를 id 속성을 넣어했습니다. 페이지, 폼 블록, 섹션 마지막 입력 필드 당신이 당신을하지 않으면 ' LL) 자동 생성 된 이름을 가져

을 당신이 할 필요가 그래서 :. (this.parentNode 물론 jQuery is always advised ;)의 일반 DOM에서 작동한다)부모 태그로 이동 this에서

  1. 6,
  2. 그리고 ID로 자식 입력 필드는 아마 "previousSibling는"너무 작동

acct_lkold로 끝나는거야? 사용 ActionSupport를을 - 당신은 선택한 개체 ID를해야하는 경우

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

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

:

<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

+0

다른 채널을 통해 알았습니다. 이와 같은 해결 방법이 실제로는 유일한 방법입니다. 나는 지금 이와 비슷한 것을 구현했다. (약간 다르지만 같은 생각이다.) –

2

이 시도 (!) :

<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가 아닌 input 요소의 id를 얻을 것이라고 생각한다. –

+0

선택한 객체 ID에 대한 코드를 업데이트했습니다 – mast0r

+0

두 번째 옵션이 작동 할 수 있지만 actionSupport를 사용할 수없는 이유가있었습니다 (기억이 안납니다).하지만 좋은 옵션입니다. –

관련 문제