如何使用javascript从select2输入的多个选定值中获取文本

时间:2017-03-02 14:44:14

标签: javascript html select2

我使用select2作为输入选择,设置倍数为真。在我的例子中,我尝试使用javascript函数从多个选定的值中获取文本数组。

这是我的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]">

因此,如果我尝试选择一个值,则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

任何人都可以帮我解决问题吗?谢谢

1 个答案:

答案 0 :(得分:1)

从我所看到的,问题出在这一行

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

因为您只选择了阵列的第一个[0]。所以这确实是预期的行为。因此,要获得数组中的所有结果文本,您可以执行类似这样的操作

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

然后你将得到一个包含所有字符串的数组。在此处阅读map函数:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

以下是一个实例:https://jsbin.com/qujocujuko/edit?html,js,output