2017-03-02 8 views
0

入力選択にselect2を使用し、multipleをtrueに設定しました。私の場合は、javascript関数を使用して複数の選択された値からテキスト配列を取得しようとしました。javascriptを使用してselect2入力の複数の選択値からテキストを取得する方法

これは私のJavaScriptとHTML入力です:

<script type="text/javascript"> 
    function getRoles(val) { 
     $('#role-cm_role_text').val(''); 
     var data = $('#role-cm_role').select2('data')[0].text; 
     $('#role-cm_role_text').val(data); 
     $('#role-cm_role').on('select2:unselecting', function (e) { 
      $('#role-cm_role_text').val(''); 
     }); 
    } 
</script> 

<select id="role-cm_role" class="form-control" name="Role[CM_ROLE][]" multiple size="4" onchange="getRoles(this.value)" style="display:none"> 
<option value="INQUIRY">CM Inquiry</option> 
<option value="SUPERVISOR">CM Supervisor</option> 

<input type="hidden" id="role-cm_role_text" class="form-control" name="Role[CM_ROLE_TEXT]"> 

私は1つの値を選択しようとするのであれば、CM_ROLE_TEXTの結果はCM_ROLEと同じです。しかし、複数の値を選択しようとすると、CM_ROLE_TEXTの値はCM_ROLEの最初の値になります。

複数の値を選択しようとする結果:

[CM_ROLE] => Array 
     (
      [0] => INQUIRY 
      [1] => SUPERVISOR 
     ) 

[CM_ROLE_TEXT] => CM Inquiry // I need the result of CM_ROLE_TEXT is same with the result of CM_ROLE 

誰もが私の問題を解決する方法を私を助けることができますか?あなただけの唯一の配列の第一[0]を選択しているように私が見ることができるものから、あなた

答えて

0

ありがとうは、問題はここ

var data = $('#role-cm_role').select2('data')[0].text; 

この行です。これは実際に期待される動作です。したがって、配列内のすべての結果テキストを取得するには、次のようなことが考えられます。

var data = $('#role-cm_role').select2('data').map(function(elem){ 
       return elem.text 
      }); 

この場合、選択したすべての文字列の配列があります。 https://jsbin.com/qujocujuko/edit?html,js,output

+0

はい、それは働いている:ここで

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/mapが実際の例である:ここについてmap機能をお読みください。ありがとうございました :) – Putra

関連する問題