【问题标题】:How to add options for select tag from java script如何从javascript添加选择标签的选项
【发布时间】:2014-12-30 02:37:32
【问题描述】:

我有一个带有一些下拉菜单的表单。我需要根据 id 值动态更改选择标签的选项。

例如,如果 id 为 1 选择标签选项应该是 cat,dog 如果 id=2 选择标签选项应该是苹果,香蕉

我将从 javascript 函数中动态获取 id。

   <% @options = Test.function1(@id) %>

现在我需要为 select_tag 添加此选项。如果我直接在表单中使用这个@option,它会给出不同的输出。 在分析我是否可以添加从 javascript 中选择的选项后,我的问题就解决了。 由于一些问题,我无法发布完整的详细信息。
更新:

      <% @options.each_with_index do|x,i|%>
            var opt = document.createElement('option');
            opt.value = '<%=i%>';
            opt.innerHTML = '<%= x%>';
            select.appendChild(opt);
      <% end %>

我在 javascript 中使用上述代码将@options 附加到选择标签,但它没有附加

我使用相同的代码为 HTML 选择标记附加此选项,效果很好,但是当我使用相同的代码轨时,它没有附加。

【问题讨论】:

  • 请解释总体目标/问题,因为这看起来像是一个 XY 问题。
  • 在javascript中我调用了一个模型函数来获取选项,现在我需要添加这些选项来选择标签。从上面的代码中,我现在在@options 变量中获得了选项,我如何将其附加到rails 中的选择标签选项
  • 我认为最好使用collection_select 从数据库中获取动态数据。
  • 我认为您应该在选择标签中使用额外的属性,例如 data-category 并将所有选项存储在 js 变量中的数组中,并根据您的选择对该数组进行排序并将该数组添加到选择中。

标签: javascript jquery ruby-on-rails ruby-on-rails-3


【解决方案1】:

Javascript

$('#dropdown1').change ->
      url = '/some/fetch_values';
      value1 = $(this).val()

      if value1 is ""
        $("#dropdwon2").empty()
        $("#dropdwon2").append $("<option></option>").attr("value", '').text('Choose dropdwon2')
      else
        $.post url, {id: dropdown1_id}, ((res) ->

          $("#dropdwon2").empty();
          $("#dropdwon2").append $("<option></option>").attr("value", '').text('Choose a sub-subcategory')
          if res.length > 0
            $.each res, (key, value) ->
              $("#dropdwon2").append $("<option></option>").attr("value", value[0]).text(value[1])

          else
            $('#dropdwon2').empty();

        ), 'JSON'

控制器

def fetch_values

@dropdown2_values = {}  #find values from params[:id]
respond_to do |format|
      format.js { render :json => @dropdown2_values}
    end
end

试试这个代码..

【讨论】:

    猜你喜欢
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    相关资源
    最近更新 更多