0

最初のコンボボックスとして collection_select タグがあり、2 番目のコンボでは基本的な html 構文を使用しました。最初のコンボの値を選択すると、2 番目のコンボボックスの値が入力されます。この機能は適切に機能していますが、ページ ソースを表示すると、オプション タグの下に入力された値が表示されません。

私の閲覧ページは..

 <% form_tag (:action =>:verify)do%>
                            <%= label_tag(:user,"Select Student") %><br/>
                            <%= collection_select("std", "id",@result,"sid", "sid",:prompt=>"--Select Student--")%><h9>&nbsp;*</h9><br/>
 <select id = 'sub_id'>
  <option value="1">--Select Server--</option>
 </select>
 <%= submit_tag 'Submit',:id => 'btn'%>

最初のコンボimの変更イベントで、次のjqueryを呼び出します。

jQuery(document).ready(function(){
   jQuery("#std_id").change(function() {
      jQuery.get('/controllers/find_val/?sid=' + jQuery("#edetail_id").val(), function(data) {

         var ds = data.split(' ');
         ds.pop();
         var options;
         jQuery.each(ds, function(index, item) {

               options += "<option value='" + ds[index] + "'>" + ds[index] + "</option>";

        });
        jQuery("#sub_id").empty();
         jQuery("#sub_id").append(options).combobox();

         });
      });
   });

私のコントローラーは...

def find_val
   @res = Student.find(:all, :conditions => ["sid = ?",params[:sid]])
end

すべてが順調に進んでいますが、2 番目のコンボの値を追加した後、値がページ ソースに表示されないため、コントローラで 2 番目のコンボの選択された値をキャプチャしてさらに処理することができません。

4

1 に答える 1

1

これを試してみてください:

var options = {};

jQuery.each(ds, function(index, item) {
    options[ds[index]] = ds[item];
});

jQuery("#sub_id").empty();
jQuery("#sub_id").addOption(options, false);
于 2012-12-21T07:05:04.207 に答える