从一个 select 列表附加到另一个列表(Apex 4.2)
Append from one select list to another (Apex 4.2)
我在 APEX 4.2 中有两个 select 列表页面项(X
和 Y
)
X
由级联下拉列表填充以提供其值。我希望能够通过动态操作仅将某些值从 X
拉入 Y
,然后能够将级联列表 (X
) 更改为另一个 selection并继续附加到列表 Y
.
目前,我有以下 JavaScript 表达式,使用 set value
操作附加到 Y
:
var target_val = $('#P1_X').find(":selected").val();
var target_text = $('#P1_X').find(":selected").text();
$('#P1_Y).append($('<option/>', {
value: target_val,
text: target_text
}));
但这根本没有被列表 Y
选中。
设法解决这个问题-
为了从一个列表追加到另一个列表,您可以创建以下函数,它使用 'onclick' 函数调用来追加和禁用所选选项:
function getValues(X){
var list = '';
for (var i = 0; i < obj.length; i++) {
if (obj.options[i].selected && !obj.options[i].disabled) {
obj.options[i].disabled=true;
list += '<optionvalue="'+obj.options[i].value+'">'+obj.options[i].innerHTML+'</option>';
}
}
document.getElementById('Y').innerHTML += list;
}
然后我可以让用户选择删除他们选择的选项,如果他们需要进行任何更改,将选项重新附加到列表底部:
function removeValues(Y){
var arr = []; //array so we can repopulate target list
var el = document.getElementById('X');
for (var i = 0; i < obj.length; i++) {
if (obj.options[i].selected) {
arr.push('<option value="'+obj.options[i].value+'">'+obj.options[i].innerHTML+'</option>');
$("select:not(#"+$(obj).parent().attr('id')+") option[value="+$(obj).val()+"]").detach();
}
}
for (var i = 0; i < arr.length; i++) {
el.innerHTML += arr[i];
}
}
我在 APEX 4.2 中有两个 select 列表页面项(X
和 Y
)
X
由级联下拉列表填充以提供其值。我希望能够通过动态操作仅将某些值从 X
拉入 Y
,然后能够将级联列表 (X
) 更改为另一个 selection并继续附加到列表 Y
.
目前,我有以下 JavaScript 表达式,使用 set value
操作附加到 Y
:
var target_val = $('#P1_X').find(":selected").val();
var target_text = $('#P1_X').find(":selected").text();
$('#P1_Y).append($('<option/>', {
value: target_val,
text: target_text
}));
但这根本没有被列表 Y
选中。
设法解决这个问题-
为了从一个列表追加到另一个列表,您可以创建以下函数,它使用 'onclick' 函数调用来追加和禁用所选选项:
function getValues(X){
var list = '';
for (var i = 0; i < obj.length; i++) {
if (obj.options[i].selected && !obj.options[i].disabled) {
obj.options[i].disabled=true;
list += '<optionvalue="'+obj.options[i].value+'">'+obj.options[i].innerHTML+'</option>';
}
}
document.getElementById('Y').innerHTML += list;
}
然后我可以让用户选择删除他们选择的选项,如果他们需要进行任何更改,将选项重新附加到列表底部:
function removeValues(Y){
var arr = []; //array so we can repopulate target list
var el = document.getElementById('X');
for (var i = 0; i < obj.length; i++) {
if (obj.options[i].selected) {
arr.push('<option value="'+obj.options[i].value+'">'+obj.options[i].innerHTML+'</option>');
$("select:not(#"+$(obj).parent().attr('id')+") option[value="+$(obj).val()+"]").detach();
}
}
for (var i = 0; i < arr.length; i++) {
el.innerHTML += arr[i];
}
}