从一个 select 列表附加到另一个列表(Apex 4.2)

Append from one select list to another (Apex 4.2)

我在 APEX 4.2 中有两个 select 列表页面项(XY

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];
           }
     }