rails jquery级联下拉重新加载

时间:2013-08-11 10:03:02

标签: jquery ruby-on-rails cascadingdropdown

我在rails页面中有三层级联下拉列表,当国家/地区发生变化,州或省更改,然后是城市更改。

我通过将change事件分别添加到country,省下拉列表来完成此功能。但是,我仍然需要解决问题:

首先,当重新加载第二层和第三层下拉列表时,如何保留它们。

第二,编辑时,如何上次加载存储值?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我知道我迟到了,但我遇到了同样的问题并在Railscasts找到了解决方案。如果你使用Ryan Bates的Railscast作为动态选择框,可以在这里找到:

http://railscasts.com/episodes/88-dynamic-select-menus-revised

评论中的一位用户发布了一个更新的咖啡脚本,以便使用编辑表单:

jQuery ->
  loaded_product = $('#product_category_id :selected').text()
  categorys = $('#product_category_id').html()
  $('#product_category_id').parent().hide()
  if loaded_product.length != 0
   brand = $('#product_brand_id :selected').text()
   escaped_brand = brand.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
   options = $(categorys).filter("optgroup[label=#{escaped_brand}]").html()
   $('#product_category_id').html(options)
   $('#product_category_id').parent().show()
  console.log(categorys)
  $('#product_brand_id').change ->
    brand = $('#product_brand_id :selected').text()
    escaped_brand = brand.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
    options = $(categorys).filter("optgroup[label=#{escaped_brand}]").html()
    console.log(options)
    if options
      $('#product_category_id').html(options)
      $('#product_category_id').parent().show()
    else
      $('#product_category_id').empty()
      $('#product_category_id').parent().hide()

也许您仍然可以使用它或其他人认为这有用。