基于隐藏Div输入值的选择选项

时间:2011-07-14 20:41:48

标签: jquery html hidden selected

我在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 :(得分:0)

此代码正常运行:

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

您无法看到它,因为您的下拉列表中的宽度很小。删除选择的宽度。

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

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

答案 1 :(得分:0)

示例演示:http://jsfiddle.net/WREdT/1

$(function(){
    $('#MedicationMonth_row18').val($('#MedicationMonthValue_row18').val());
});

答案 2 :(得分:-1)

任何元素的ID都应始终在页面上单独显示。更改隐藏输入元素或选择元素的ID。

试试这个

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

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