Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 用于选择在Firefox中不工作的动态表单字段的Coffee脚本_Jquery_Ruby On Rails 3_Firefox_Coffeescript_Grouped Collection Select - Fatal编程技术网

Jquery 用于选择在Firefox中不工作的动态表单字段的Coffee脚本

Jquery 用于选择在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自动填充模型中的第一个设施 编辑呼叫时,

我有一个传统的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.rb


我对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()