如何使用 javascript 从 select2 输入的多个选定值中获取文本
how to get text from multiple selected values of select2 input using javascript
我使用 select2 作为我的输入 select 并设置 multiple 为真。就我而言,我尝试使用 javascript 函数从多个 selected 值中获取文本数组。
这是我的 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]">
因此,如果我尝试 select 一个值,CM_ROLE_TEXT
的结果与 CM_ROLE
相同。但是如果我尝试 select 多个值,CM_ROLE_TEXT
的结果只是得到 CM_ROLE
的第一个值。
如果尝试 select 多个值的结果:
[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
任何人都可以帮助我如何解决我的问题?谢谢
据我所知,问题出在这行
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
我使用 select2 作为我的输入 select 并设置 multiple 为真。就我而言,我尝试使用 javascript 函数从多个 selected 值中获取文本数组。
这是我的 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]">
因此,如果我尝试 select 一个值,CM_ROLE_TEXT
的结果与 CM_ROLE
相同。但是如果我尝试 select 多个值,CM_ROLE_TEXT
的结果只是得到 CM_ROLE
的第一个值。
如果尝试 select 多个值的结果:
[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
任何人都可以帮助我如何解决我的问题?谢谢
据我所知,问题出在这行
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