我正在尝试在Rails 4中创建一个应用程序。
我使用简单的表单形式,并有一个js表单帮助文件,我用它来隐藏或显示表单元素,具体取决于用户在表单中移动时如何回答问题。
我的问题是这个js函数在初始创建时工作正常,但是如果我回来编辑表单,那么当draft属性为== false时会显示提醒id内容。
有没有其他方法可以解决这个问题?
我的表格有:
if $("input:radio[name='"+ inString + "[scope_attributes][finalise_attributes][draft]']").is(':checked')
$('#reminder').show()
else
$('#reminder').hide()
$(document).on 'change', "input:radio[name='"+ inString + "[scope_attributes][finalise_attributes][draft]']", ()->
if $(this).val() == 'true'
$('#reminder').show()
else
$('#reminder').hide()
我的js form-helper文件有:
{{1}}
答案 0 :(得分:0)
可能有几种不同的方法可以做到这一点,但我做了一些非常相似的事情。
将id或类附加到稍后可用于绑定的单选按钮(在我的情况下,对于每个无线电/值组合,我添加了一个像class: this_radio_value_true
这样的唯一类。)
同样,将id或类附加到您想要影响的标记部分(在我的情况下,我将一个id添加到我想要隐藏/显示为id: stuff_to_control
的form_group)。
触发这些元素的jQuery:
$('.this_radio_value_true').on('click', function() {
$('#stuff_to_control').show();
});
$('.this_radio_value_false').on('click', function() {
$('#stuff_to_control').hide();
});
答案 1 :(得分:0)
这可能是因为TurboLinks。您无法使用$(document).on 'change'
。您必须列出TurboLink事件。 Rails每次都不会加载整个页面。它只加载布局中的内容。你必须使用
$(document).on 'ready page:load', ->
以下是文档:https://github.com/rails/turbolinks/#events
指南:http://guides.rubyonrails.org/working_with_javascript_in_rails.html#page-change-events