我在 Rails 页面中有一个三层级联下拉菜单,当国家/地区发生变化时,州或省发生变化,然后城市发生变化。
我通过分别向国家、省份下拉列表添加更改事件来完成该功能。但是,我仍然有问题:
首先,当reload时第二层和第三层的下拉列表都不见了,如何保留它们。
二、编辑时,如何加载上次存储的值?
提前致谢。
我在 Rails 页面中有一个三层级联下拉菜单,当国家/地区发生变化时,州或省发生变化,然后城市发生变化。
我通过分别向国家、省份下拉列表添加更改事件来完成该功能。但是,我仍然有问题:
首先,当reload时第二层和第三层的下拉列表都不见了,如何保留它们。
二、编辑时,如何加载上次存储的值?
提前致谢。
我知道我有点晚了,但我遇到了同样的问题,并在 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()
也许您仍然可以使用它,或者其他人觉得这很有帮助。