Выбранный параметр на основе значения скрытого Div - PullRequest
0 голосов
/ 15 июля 2011

У меня есть выпадающее меню в форме, созданной ajax.

HTML:

<select id="MedicationMonth_row18" name="MedicationMonth[]" style="width: 30px;">
<option value="">--Select--</option>
<option value="01">Jan</option>
<option value="02">Feb</option>
<option value="03">Mar</option>
<option value="04">Apr</option>
<option value="05">May</option>
<option value="06">Jun</option>
<option value="07">Jul</option>
<option value="08">Aug</option>
<option value="09">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>

Я пытаюсь добавить выбранное значение на основе входного значения в скрытом div.

HTML

<td align="left" style="display: none;">
<input id="MedicationMonthValue_row18" type="text" value="03" name="MedicationMonthValue[]" style="width:30px">
</td>

Код JS, который я использую для создания выбранной опции, следующий:

var medval = $('#MedicationMonthValue_'+id).val();
$('#MedicationMonth_'+id).val(medval);

Также пробовал следующее:

$('#MedicationMonth_'+id).change(function() { $('#MedicationMonthValue_'+id).val( $(this).val() ); });`    

Когда я предупреждаю medval, я получаю значение из скрытого поля ввода.

Я боролся с этим уже несколько недель. Любые указатели были бы великолепны! Спасибо!

РЕДАКТИРОВАТЬ: Вот более полные коды того, что я использую, которые могут указать на проблемы со стеком.

$('.trSelected', grid).each(function(){
                            var id = $(this).attr('id');                                
                            for(i=0;i < ($(this).children().length); i++){
                                    if (i == 0) {
                                            var name = $("thead tr").children().eq(i).attr("abbr");
                                            var width = $(this).children().eq(i).children().css('width');
                                            var old_value = $(this).children().eq(i).text();
                                            var new_value = $(this).children().eq(i).html('<div style="text-align: center; width: 40px;"><input type="hidden" name="'+name+'[]" value="'+old_value+'"/>'+old_value+'</div>');
                                    }
                                    else {
                                            var name = $("thead tr").children().eq(i).attr("abbr");
                                            var old_value = $(this).children().eq(i).text();
                                            var width = $(this).children().eq(i).children().css('width');   
                                            if (name == 'MedicationMonth') {
                                      var medval = $('#MedicationMonthValue_'+id).val();
                                      $('#MedicationMonth_'+id).val(medval);
                                                var new_value = $(this).children().eq(i).html('<select id="MedicationMonth_'+id+'" name="MedicationMonth[]"><option value="">--Select--</option><option value="01">Jan</option><option value="02">Feb</option><option value="03">Mar</option><option value="04">Apr</option><option value="05">May</option><option value="06">Jun</option><option value="07">Jul</option><option value="08">Aug</option><option value="09">Sep</option><option value="10">Oct</option><option value="11">Nov</option><option value="12">Dec</option></select>');                                                          
                                            }                                                                                         
                                            else {
                                                  var old_value = $(this).children().eq(i).text();
                                                  var new_value = $(this).children().eq(i).html('<input style="width:'+width+'" type="text" name="'+name+'[]" id="'+name+'_'+id+'" value="'+old_value+'"/>');
                                            }
                                    }
                            }
                            $(this).removeClass("trSelected");
                            $(this).addClass("trEdited");
                            $("div.fbutton").eq(2).css('visibility', 'hidden');
                            $("div.fbutton").eq(2).css('width', '0px');

                            $("div.fbutton").eq(3).css('visibility', 'visible');
                            $("div.fbutton").eq(3).css('width', 'auto');

                            $("div.fbutton").eq(4).css('visibility', 'visible');
                            $("div.fbutton").eq(4).css('width', 'auto');                               
                    });

Ответы [ 3 ]

0 голосов
/ 15 июля 2011

Этот код работает:

var medval = $('#MedicationMonthValue_'+id).val();
$('#MedicationMonth_'+id).val(medval);

Вы просто не можете его увидеть, потому что у вас есть небольшая ширина в раскрывающемся списке.Удалите ширину на ваш выбор.

<select id="MedicationMonth_row18" name="MedicationMonth[]">

http://jsfiddle.net/craigm/NSN62/

0 голосов
/ 15 июля 2011

Пример демонстрации: http://jsfiddle.net/WREdT/1

$(function(){
    $('#MedicationMonth_row18').val($('#MedicationMonthValue_row18').val());
});
0 голосов
/ 15 июля 2011

Идентификаторы для любого элемента всегда должны быть уникальными на странице. Измените идентификатор скрытого элемента ввода или элемент выбора.

Попробуйте это

   <input id="hid_MedicationMonthValue_row18" type="text" value="03" name="MedicationMonthValue[]" style="width:30px">

    var medval = $('#MedicationMonthValue_'+id).val();
    $('#hid_MedicationMonth_'+id).val(medval);
...