2011-07-14 68 views
0

我在ajax生成的表單中有一個下拉菜單。基於隱藏Div輸入值的選定選項

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');        
        }); 
+0

當用於設置'select'值的代碼稱爲?由於它是一個Ajax生成的表單,因此您需要確保**表單生成後的代碼**,即回調函數中。 –

+0

id是否包含'「row」+ index'? –

+0

它在頁面內與ajax相關的代碼中被調用。好的,你能提供一個回調函數的例子嗎? 是的,每個id包含行的行+ attr索引。上面提供的例子... row18 –

回答

-1

任何元素的id應該總是在頁面上被分開。要麼更改隱藏的輸入元素的id或select元素。

試試這個

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

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

你能否給我投票的理由? – ShankarSangoli

+0

感謝您的輸入。我沒有投票給你,但是,元素ID已經是唯一的。所以,你的建議並沒有幫助我。 –

+0

我低估了這個答案,因爲這個ID已經是唯一的了,在答案中發佈的代碼就是他在原始文章中的內容。答案沒有提供解決問題的有用信息。 –

0

此代碼工作:

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

你不能看到它,因爲你有你的下拉列表中選擇一個微小的寬度。刪除選擇的寬度。

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

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

+0

感謝您的建議代碼。我嘗試刪除選擇代碼中的大小屬性,並且所選值仍然不出現。 –

+0

它在我的答案中鏈接我的小提琴工作。如果它不在你的頁面上工作,那麼其他代碼肯定會發生一些事情。也許這是一個執行問題的順序,或者其他的失敗,並阻止這些代碼運行。如果你可以發佈更多的代碼(比如你在另一個評論中提到的Ajax代碼以及該頁面上運行的任何其他代碼),我可以嘗試提供更多幫助,但正如你發佈的內容應該工作得很好。 –

+0

Thanks,Craig ...我在上面發佈了更多代碼。 –

0

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

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

感謝您的建議代碼。我試圖把它們放在頭部,仍然沒有快樂。我會嘗試發佈更多的代碼來說明我正在嘗試做什麼。如果這對於事物之間的交互方式產生影響,我將使用Flexigrid和CI。使用Ajax將數據拉入視圖。 –

相關問題