CoffeeScript 在更改和加载时动态选择表单字段

2024-01-09

我有一个 Rails 应用程序,我试图根据表单中选择的区域来选择设施列表。到目前为止,我已经实现了 group_collection_select 以及一些 CoffeeScript 来执行此操作。

它在创建新记录和选择区域时起作用。行为是仅显示为所选区域列出的设施。不起作用的是,在编辑记录时,选择设施会显示按区域分组的所有设施,而不是将设施限制在所选区域。

如果我选择另一个区域,然后选择原始原因,则会显示正确的设施列表。

我想了解如何将 CoffeeScript 重构为在编辑记录时在页面加载(编辑时)和更改时触发该函数的位置。

最后,在某些情况下,transfer_from_id 设置为 nil/blank,并且我们使用名为transfer_from_other 的文本字段。目前,如果我不选择设施并填写transfer_from_other,因为CoffeeScript在transfer_from_id中加载设施,它将通过范围内的第一个设施设置transfer_from_id。我想将其设置为如果未选择任何设施,则transfer_from_id为零,因此我可以使用transfer_from_other。

我的代码如下所示:

来电.js.咖啡

jQuery ->
  facilities = $('#call_transfer_from_id').html()

  $('#call_region_id').change ->
    region = $('#call_region_id :selected').text()
    options = $(facilities).filter("optgroup[label=#{region}]").html()

    if options
      $('#call_transfer_from_id').html(options)   
    else
      $('#call_transfer_from_id').empty()

区域.rb

has_many :facilities

设施.rb

attr_accessible :region_id
belongs_to :region

_form.html.erb 摘录

      <%= f.label :region %>
      <%= f.collection_select(:region_id, Region.all, :id, :area, {:include_blank => true}, {:class => 'select', required: true}) %>
      <%= f.label :Transfer_From %>
      <%= f.grouped_collection_select :transfer_from_id, Region.order(:area), :active_facilities, :area, :id, :facility_name, {include_blank: true}, class: 'select' %>
      <%= f.label :Transfer_From_Other%>
      <%= f.text_field :transfer_from_other %>

如果我的问题和示例不清楚,请告诉我,我很乐意进行编辑。


关于在页面加载和选择更改时更新选择,除非我遗漏了一些东西,只是将选择更新部分分解为它自己的函数,然后在页面加载时调用一次,然后在每个函数上调用一次,这还不够吗?选择改变?

jQuery ->
  facilities = $('#call_transfer_from_id').html()

  update_facilities = ->
    region = $('#call_region_id :selected').text()
    options = $(facilities).filter("optgroup[label=#{region}]").html()

    if options
      $('#call_transfer_from_id').html(options)   
    else
      $('#call_transfer_from_id').empty()      

  $('#call_region_id').change ->
    update_facilities()

  update_facilities()

关于第二部分,每次更新#call_transfer_from_id选择,您将失去空白选项。第二个版本会在您每次选择区域时添加并选择一个空白选项:

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>")
      # Ensure that the blank option is selected
      $('#call_transfer_from_id option:first').attr("selected", "selected");
    else
      $('#call_transfer_from_id').empty()      

  $('#call_region_id').change ->
    update_facilities()

  update_facilities()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CoffeeScript 在更改和加载时动态选择表单字段 的相关文章

  • 从 onclick 属性调用 e.stopImmediatePropagation()

    如何从事件对象中获取事件对象onclick属性 我努力了 a href something html Click me a 另外 我也尝试过这个 a href something html Click me a 但控制台只显示 a 元素 我
  • 解析包含 json 字符串的 json

    我有一个 json 里面有另一个 json 但它在双引号内 因此它给了我一个解析错误 除了使用之外还有什么方法可以解析这个jsongsub替换双引号 obj Name FirstName Douglas LastName Crockford
  • 如何使用 JQuery 提取嵌套 HTML 中的文本?

    我这里有 HTML 代码 div class actResult style border solid table tbody tr td Order Number td td 1 td tr tr td Customer Number t
  • Active Record 和 DAO 之间的区别?

    数据访问对象和 Active Record 之间有什么区别 它们看起来非常相似 因为都在应用程序和持久层之间构建了一个层 并使用 SQL 查询抽象出直接数据库访问 数据访问对象 DAO 是指数据层中负责在域中保存单独实体的对象 Active
  • 如何检索 JQuery 数据表的排序状态

    我对 JQuery Datatables 还很陌生 我正在尝试检索有关数据表的两个信息 当前正在对哪个列索引进行排序 也称为选择 排序顺序 升序或降序 不知道我应该如何解决这个问题 使用 jquery 查找列索引 或者 Datatables
  • jQuery:获取 HTML 表格第四行(仅)的第一列值

    我有一个名为 resultGridTable 的表 我有一个 jQuery 函数要在表的每一行上执行 在函数中 this 表示一行 对于第四行 我需要提醒 第四行 第一列值 我有以下代码 但它不起作用 我们怎样才能让它发挥作用呢 对于第五行
  • jquery 隐藏简单的 javascript 错误

    我在 chrome 和 firefox 中使用 jQuery 和 flot 当我编写代码时 我发现执行在一些愚蠢的事情上会默默失败 例如访问不存在的哈希结构等 感觉 jQuery 中有一些 try catch 逻辑 让我看不到任何错误 有没
  • Spring动态(可扩展)列表形式

    我在春季遇到动态表单问题 在我们的表单中 我们要指定一个标题 并添加一些问题 我们有一个 添加 按钮来添加问题输入表单 jquery 当需要时 我们的表格有一个问题字段 每次都会添加额外的字段 按下 添加 按钮 提交时似乎没有额外的字段 已
  • 通过单击表格单元格中的任意位置来勾选表格单元格中的复选框

    我正在尝试找出如何执行此操作 但我无法在任何地方找到该信息 基本上 我有一个表格 每个单元格都包含一个复选框 我希望能够通过单击单元格内的任意位置来勾选复选框 我不知道该怎么做 Javascript 对我来说是最好的解决方案 但我也可以使用
  • 在Java Servlet中获取通过jquery ajax发送的参数[重复]

    这个问题在这里已经有答案了 我在网上搜索这个主题 但找不到有效的示例 我会很高兴有人能给我帮助 这就是我测试的 ajax url GetJson type POST dataType json contentType application
  • 帮助理解 JQuery 属性等于选择器

    我想找一个 td class one two three four 在一个 div 这两个选择器的工作原理 myid td role foo myid two 但这个却没有 为什么呢 myid two td role foo 因为选择器字符
  • IE:“nodeType”为 null 或不是对象

    我在 IE 6 7 8 中的网站上遇到此问题 nodeType 为 null 或不是对象 该错误涉及 f nodeType 属性 基本上 f 是未定义的 所以问题是之前的 但我无法修复它 从 IE 开发人员工具栏调试来看 似乎是这一行引发了
  • jQuery .load() html 内容并执行脚本

    我的文档中有以下功能 jQuery document ready function jQuery body on click a menu function var target jQuery this attr href jQuery c
  • Ruby - :variable 和 @variable 之间的区别

    作为 Ruby on Rails 新手 我知道 和 引用具有不同的含义 我看见这个帖子 https stackoverflow com questions 3538575 whats the difference between and v
  • div 准备好后如何调用函数?

    我的 javascript 文件中有以下内容 var divId divIDer jQuery divId ready function createGrid Adds a grid to the html html 看起来像这样 div
  • Disqus:使用 jQuery 成功后更改标题

    Disqus 根据请求自动放置定义的标题 例如 添加新评论 我尝试在ready 上使用jquery更改它的值 dsq new post h3 text Paticipa con tu cuenta favorita 没有成功 我如何知道 d
  • jQuery/JavaScript“this”指针混淆

    当函数时 this 的行为bar被称为让我困惑 请参阅下面的代码 当从单击处理程序调用 bar 时 有什么方法可以将 this 安排为普通的旧 js 对象实例 而不是 html 元素 a class with a method functi
  • heroku 语言区域设置不工作 I18n::MissingTranslationData

    在我的本地电脑上一切正常 但在 heroku 上我收到错误 我的 Heroku 控制台 PC HOME PC c rails konkurranceportalen master heroku console Ruby console fo
  • 如何阻止用户重复单击 jQuery AJAX 调用?

    我有一个包含以下脚本的网页 JavaScript function LinkClicked var stage this id var stop ContentPlaceHolderMenu txtDate val var nDays Co
  • jQuery.ajax 发送 OPTIONS 和 POST,如何使用 Express.js (Node.js) 处理

    每当我的应用程序向服务器发送 ajax 请求时 ajax url config api url 1 register type POST contentType application json data some JSON data he

随机推荐