Jquery 用于选择在Firefox中不工作的动态表单字段的Coffee脚本
我有一个传统的Rails 3.2.14应用程序,我试图通过一个关联、分组的集合和一些CoffeeScript来按地区限制设施列表。我最初的问题是:。在一些帮助下,我们能够初步解决问题并实现以下行为 呼叫时创建一个区域被选中,并且设施受其所属区域的约束,此字段称为“转帐自”id。当使用设施模型中未列出的地址创建呼叫时,我们使用“转帐自”其他字段输入地址。当这种情况发生时,transfer_from_id字段故意留空,并注入NIL以防止CoffeeScript自动填充模型中的第一个设施 编辑呼叫时,如果“转帐自”id包含一个值,则会在表单中显示“转帐自”id和设施名称 最初,下面的代码在Chrome中运行得非常好,但是当我在Firefox on call create中测试该行为时,它会用列表中的第一个工具自动填充transfer_from_id字段,即使我们在CoffeeScript中预先添加了一个空白选项。编辑呼叫时,会观察到相同的行为 我想知道如何在Firefox中解决这个问题,因为我们跨平台/浏览器使用这个应用程序。我真的很想让这个功能发挥作用,但我不知道为什么它在Firefox中不起作用。我已经使用firebug尝试调试这个,但是我在控制台中没有看到任何错误 下面是我的代码库摘录,可能有助于说明我正在尝试做什么: 调用/_form.html.erb摘录 region.rbJquery 用于选择在Firefox中不工作的动态表单字段的Coffee脚本,jquery,ruby-on-rails-3,firefox,coffeescript,grouped-collection-select,Jquery,Ruby On Rails 3,Firefox,Coffeescript,Grouped Collection Select,我有一个传统的Rails 3.2.14应用程序,我试图通过一个关联、分组的集合和一些CoffeeScript来按地区限制设施列表。我最初的问题是:。在一些帮助下,我们能够初步解决问题并实现以下行为 呼叫时创建一个区域被选中,并且设施受其所属区域的约束,此字段称为“转帐自”id。当使用设施模型中未列出的地址创建呼叫时,我们使用“转帐自”其他字段输入地址。当这种情况发生时,transfer_from_id字段故意留空,并注入NIL以防止CoffeeScript自动填充模型中的第一个设施 编辑呼叫时,
我对CoffeeScript非常陌生,我的JS/jQuery技能现在还不是很熟练,所以我可以在这方面获得一些帮助,让它跨浏览器工作。任何提示或建议都将不胜感激。我希望这不是一个重复的问题,如果我的问题不清楚或者您需要更多信息,请随时告诉我。经过一些黑客攻击和尝试/错误后,我能够对所有浏览器都适用的CoffeeScript进行编辑。在最新版本的Firefox中,prepend方法似乎无法正常工作,因此我在其中添加了一个空白选项,然后在一行中添加了设施选项数组
jQuery ->
facilities = $('#call_transfer_from_id').html()
update_facilities = ->
region = $('#call_region_id :selected').text()
options = $(facilities).filter("optgroup[label=#{region}]").html()
if options
# Set the options and include a blank option at the top
$('#call_transfer_from_id').html("<option value=''></option>" + options)
# Ensure that the blank option is selected
$('#call_transfer_from_id').attr("selected", "selected")
else
$('#call_transfer_from_id').empty()
$('#call_region_id').change ->
update_facilities()
update_facilities()
jQuery ->
facilities = $('#call_transfer_from_id').html()
update_facilities = ->
region = $('#call_region_id :selected').text()
options = $(facilities).filter("optgroup[label=#{region}]").html()
if options
# Set the options
$('#call_transfer_from_id').html(options)
# Add in a blank option at the top
$('#call_transfer_from_id').prepend("<option value=''></option>")
else
$('#call_transfer_from_id').empty()
$('#call_region_id').change ->
update_facilities()
update_facilities()
belongs_to :region
scope :active, where(status: "Active").order('facility_name ASC')
has_many :facilities
def active_facilities
self.facilities.active
end
jQuery ->
facilities = $('#call_transfer_from_id').html()
update_facilities = ->
region = $('#call_region_id :selected').text()
options = $(facilities).filter("optgroup[label=#{region}]").html()
if options
# Set the options and include a blank option at the top
$('#call_transfer_from_id').html("<option value=''></option>" + options)
# Ensure that the blank option is selected
$('#call_transfer_from_id').attr("selected", "selected")
else
$('#call_transfer_from_id').empty()
$('#call_region_id').change ->
update_facilities()
update_facilities()