Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Передача нового значения value в select (https://javascript.ru/forum/dom-window/58167-peredacha-novogo-znacheniya-value-v-select.html)

tvixa 08.09.2015 14:48

Передача нового значения value в select
 
Добрый день. У меня возникла небольшая проблемка с изменением значения в выпадающем списке. Суть такова: есть блок со списком элементов, у каждого элемента свои свойства.

При клике на какой-нибудь элемент списка слева в правой таблице появляются соответствующие значения. Текстовые поля input правильно отображают получаемые значения, а вот с выпадающим списком получается запара. Я получаю от сервлета его значение (назовем его merchantId), и должна найти и сравнить со значением получаемым из другого сервлета. Вот этот второй сервлет возвращает список всех участников : их id и name . Мне необходимо вставить в значение value переменную merchantId и установить соответствующее этому id name и сделать его selected. Второй день сижу... Помогите пожалуйста. Вот костяк
<div class="fraud_event_block_2">
            <table id="fraudListSettings" class="fraudListSettings">
                <tr>
                    <th>Настройка</th>
                    <th>Коммерсант</th>
                    <th>Значение</th>
                </tr>
                <tr>
                    <th>проверка</th>
                    <th>проверчкмммм</th>
                    <th>проверка значения</th>
                </tr>
            </table>
        </div>


А вот мои запросы
function getMerchantList(){
        var xml='<request type="mng_GetMerchantList">'+
            '<sessionId>' + adSessionId + '</sessionId>'+
            '<pageSize>' + 999999 + '</pageSize>' +
            '<pageNum>' + 1 + '</pageNum>' +
            '</request>';
        postxml('/j/LS/mng/merchant/mng_GetMerchantList', xml,
            function(xml){
                $(xml).find('Merchant').each(function (){
                    $('.fraudMerchantList').append('<option value="' + $(this).find('id').text() + '">'
                        + $(this).find('name').text() + '</option>');
                });

                /*$(".fraudMerchantList option[value='1']").attr("selected", "selected");*/
            })
    }
    var counter = 0;
    function selectFraudTypeSettings(xml){
        $(xml).find("fraudEventTypeDataList").each(function(){
            var items = $(this).attr('totalCount');
            alert(items);
            $("#fraudListSettings").html("");
            if (items > 0){
                $(this).find('fraudEventTypeData').each(function(){
                    varName = $(this).find('varName').text();
                    data = $(this).find('data').text();
                    FroMerchantId = $(this).find('merchantId').text();
                    eventTypeDataId = $(this).find('id').text();
                    if (eventTypeDataId != 0){
                        $("#fraudListSettings").append('<tr><th><input type="text" value="'+ varName +'"></th><th class="test"><select class="fraudMerchantList" id="'+counter+'"></select><span>'+FroMerchantId+'</span></th><th><input type="text" value="'+ data +'"/></th></tr>');
                    }
                    counter++;
                });
                getMerchantList();
                var myselect = $("#fraudListSettings select"+ counter);
                options = myselect.options;
                for(var i = 0; i< options.length; i++){
                    if(options[i].value == FroMerchantId){
                        $(("#"+counter).option[value=''+FroMerchantId+'']).attr("selected", "selected");
                    }
                }
            }
        })
    }


Если коротко, мне просто нужно установить выбранным в вывадающем поле значение с id совпадающим с полученным. Надеюсь подробно расписала. Заранее спасибо
Циферки под закрашенными полями это получаемые id - шники клиентов

рони 08.09.2015 15:06

Цитата:

Сообщение от tvixa
var myselect = $("#fraudListSettings select"+ counter);

???
var myselect = $("#"+ counter)[0];


Цитата:

Сообщение от tvixa
if(options[i].value == FroMerchantId){ $(("#"+counter).option[value=''+FroMerchantId+'']).attr("selected", "selected"); }

if(options[i].value == FroMerchantId){
                        options[i].selected=true;
                    }

tvixa 08.09.2015 15:21

Он не ухватывает drop down myselect в принципе. и не присваивает переменной. пишет undefined

рони 08.09.2015 15:36

Цитата:

Сообщение от tvixa
Он не ухватывает drop down myselect

не осилил

tvixa 08.09.2015 15:38


Почему - то не получается получить объект select через id

рони 08.09.2015 15:41

Цитата:

Сообщение от tvixa
getMerchantList();

в этой функции вам нужно установку selected делать
строки после 35 не будут ждать когда сработает строка 34 , сработают раньше чем 34


Часовой пояс GMT +3, время: 13:48.