Oracle apex и jQuery — изменение значений из списка выбора

По этому вопросу здесь мне, наконец, удалось изменить два значения из одного и того же столбец - приоритет. Я пытался сделать это в списке выбора - приоритет столбца lov - но без окончательного успеха. Выборки не имеют свойств «значения по умолчанию», таких как текстовые поля, поэтому я попытался получить их из свойств source.context.index. здесь проверка приложения oracle apex, пользователя и пароля. Я собираюсь использовать чистый Javascript, чтобы справиться с этим.

Javascript запускается после изменения списка выбора:

   var source = apex.jQuery(this.triggeringElement).find('select[name="f31"]')
   console.log(source)
   var lista  =  apex.jQuery(source.context.form).find('select[name="f31"]')  
   console.log(lista)
   console.log('source.context.selectedIndex inicial ' +source.context.index)
   var valor_default = lista[0].selectedIndex
   console.log(valor_default)
   var index_default = apex.jQuery(this.triggeringElement).closest('select[name="f31"]').find('option[selected]')[0].index
   console.log('indice default:' + index_default)

    for (var x=0;x<lista.length;x++){
        if (source.context.selectedIndex == lista[x].selectedIndex && source.context != lista[x]){
            console.log('selectedIndex ' + source.context.selectedIndex)
            console.log('source.context')
            console.log(source.context)
            console.log('lista[x]')
            console.log(lista[x])
            lista[x].selectedIndex = index_default
            index_default = source.context.selectedIndex
       //     lista[x].defaultValue = source.context.defaultValue
        //    source.context.defaultValue = source.context.value

        }
}

person Jose Gustavo Lima    schedule 18.04.2018    source источник


Ответы (1)


Товарищи,

Возможное решение было найдено.

В свойствах формы - текст нижнего колонтитула строится массив для получения индексов объекта f31 - список выбора:

<script >
var listaOriginal  = document.getElementsByName('f31')
var valordefault = []
for (item of listaOriginal) {

    valordefault.push(item.selectedIndex)

}
    console.log(valordefault)
</script>

при изменении из списка выбора массив используется для сравнения с изменениями:

   var source = apex.jQuery(this.triggeringElement).find('select[name="f31"]')
   var lista  =  apex.jQuery(source.context.form).find('select[name="f31"]')  
   var valueDefault = lista[0].selectedIndex
    var happyIndex = ''



   for (var happy=0;happy<lista.length; happy++){
       if (source.context === lista[happy]){
           happyIndex = happy
       }
   }

for (var x=0;x<lista.length;x++){
    if (source.context !== lista[x] && source.context.selectedIndex == lista[x].selectedIndex){       

        var my_table = {};
        my_table.source_context_selectedIndex =  source.context.selectedIndex
        my_table.lista_x_selectedIndex = lista[x].selectedIndex
        my_table.valueDefault =  valueDefault[x]
        console.table(tabela)


        lista[x].selectedIndex = valueDefault[happyIndex]
        valueDefault[happyIndex] = valueDefault[x]
        valueDefault[x]=lista[x].selectedIndex


    //    source.context.defaultValue = source.context.value

    }
    console.log(valueDefault)
}
person Jose Gustavo Lima    schedule 19.04.2018
comment
По какой-то причине код стал бесполезным. Возвращает ошибку в контексте выбранного элемента. Я считаю, что это было связано с новой версией apex 18. - person Jose Gustavo Lima; 23.04.2018
comment
Apex 18 запутывает некоторые ресурсы, такие как context и context.form. Например, для переменной lista теперь установлено значение var lista = apex.jQuery(source.prevObject[0].form).find('select[name=f13]') . Работа над... - person Jose Gustavo Lima; 23.04.2018