我在rails页面中有三层级联下拉列表,当国家/地区发生变化,州或省更改,然后是城市更改。
我通过将change事件分别添加到country,省下拉列表来完成此功能。但是,我仍然需要解决问题:
首先,当重新加载第二层和第三层下拉列表时,如何保留它们。
第二,编辑时,如何上次加载存储值?
提前致谢。
答案 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()
也许您仍然可以使用它或其他人认为这有用。