You need to sign in to do that
Don't have an account?

選択リスト (複数選択)項目のonchangeイベントで変更した値を取得したい
いつもお世話になっております。
apex:inputFieldタグで出力した「選択リスト (複数選択)」型の項目のonchangeイベントで
変更した値を取得したいのですが、どのように実装すればよいでしょうか。
テキスト項目ですと、onchangeイベントで変更した値を取得できるのですが、
選択リスト (複数選択)項目ではどのようにしたら良いのかわかりませんでした。
【再現手順】
1.取引先に、選択リスト (複数選択)項目「MultiPicklistField」を作成する
2.下記ページを作成する
①テキスト項目(取引先名)を変更し、テキスト項目以外の箇所をクリックする
→変更した値がアラートされる
②複数選択リストの項目(MultiPicklistField)を変更する
→何も起こらない(★ここでテキスト項目と同様に、変更した値を取得したい★)
どうぞ宜しくお願い致します。
apex:inputFieldタグで出力した「選択リスト (複数選択)」型の項目のonchangeイベントで
変更した値を取得したいのですが、どのように実装すればよいでしょうか。
テキスト項目ですと、onchangeイベントで変更した値を取得できるのですが、
選択リスト (複数選択)項目ではどのようにしたら良いのかわかりませんでした。
【再現手順】
1.取引先に、選択リスト (複数選択)項目「MultiPicklistField」を作成する
2.下記ページを作成する
<apex:page standardController="Account" showHeader="true" sidebar="false" recordSetVar="Accounts" id="page"> <apex:form> <apex:pageBlock mode="edit" id="block"> <apex:pageBlockSection title="ApexTable" columns="1"> <apex:pageBlockTable value="{!Accounts}" var="item"> <apex:column headerValue="{!$ObjectType.Account.Fields.Name.Label}"> <apex:inputField value="{!item.Name}" onchange="alert(event.target.value);"/> </apex:column> <apex:column headerValue="{!$ObjectType.Account.Fields.MultiPicklistField__c.Label}"> <apex:inputField value="{!item.MultiPicklistField__c}" onchange="alert(event.target.value);"/> </apex:column> </apex:pageBlockTable> </apex:pageBlockSection> </apex:pageBlock> </apex:form> </apex:page>3.ページにて動作確認
①テキスト項目(取引先名)を変更し、テキスト項目以外の箇所をクリックする
→変更した値がアラートされる
②複数選択リストの項目(MultiPicklistField)を変更する
→何も起こらない(★ここでテキスト項目と同様に、変更した値を取得したい★)
どうぞ宜しくお願い致します。
方法があるか調べてみたところ、『document.getElementById('{!$Component.pickFields}').options』というように指定する必要があるみたいです。これで複数選択リストの値リストを取得できました。
取得した値リストをループで回しながら、『selected』で選択済みの値かを判定できます。
1つずつ選択済みかを判定する必要がありそうですが、ひとまずこんな感じで処理できそうでした。
All Answers
方法があるか調べてみたところ、『document.getElementById('{!$Component.pickFields}').options』というように指定する必要があるみたいです。これで複数選択リストの値リストを取得できました。
取得した値リストをループで回しながら、『selected』で選択済みの値かを判定できます。
1つずつ選択済みかを判定する必要がありそうですが、ひとまずこんな感じで処理できそうでした。
何度もご丁寧に誠にありがとうございます。
非常にわかりやすく、お力添えに感謝しております。
厚かましいのですが、もう1点伺っても宜しいでしょうか。
onchangeのときに選択ボックスの値を設定できるか試すために、
ご教授頂いたソースに「options[i].selected=true;」という1文を追加してみました。 私の予想では、選択肢一つを選択済みにすれば一緒に全部選択済みになるのではないかと思ったのですが、
そうなりませんでした。
しかし、続けてもう一度一つの値を選択済みにしてみると、全部選択済みになりました。
選択ボックスの値を設定する方法をご教授頂けないでしょうか。
上記ソースでは何故うまく動かないのでしょうか。
重ね重ねで恐縮ですが、どうぞ宜しくお願い致します。
というようなことはできるでしょうか?
actionSupportをつかってApexクラス側で値を変更するなどの処理を行い、reRenderで再描画する方がシンプルに対応できるかもしれません。
何度も誠にありがとうございました。