【发布时间】:2021-08-02 23:29:57
【问题描述】:
我有一个下拉列表,用户在其中进行选择,然后显示部分中的相应字段供他们完成。
我的表单域
<%= f.simple_fields_for :security do |security| %>
<%= security.label :security_type %>
<%= security.select :property_type, Security.property_types.keys, {}, class: 'project-dropdown-
width', id: "security" %>
<div id="property-fields">
<%= render partial: "project_steps/security_partials/property", security: @security, locals: { security: security } %>
</div>
<div id="other-fields" style="display: none;">
<%= render partial: "project_steps/security_partials/land", security: @security, locals: { security: security } %>
</div>
<% end %>
应用程序.js
document.addEventListener('turbolinks:load', () => {
const element = document.getElementById('security');
if (element) {
$('#security').change((e) => {
if (e.target.value == 'other') {
$('#property-fields').eq(0).hide();
$('#other-fields').eq(0).fadeIn();
}
else {
$('#property-fields').eq(0).fadeIn();
$('#other-fields').eq(0).hide();
}
});
}
});
这适用于根据用户在表单中单击的选项显示和隐藏必填字段。但是,当用户保存、前进,然后再次返回页面(进行编辑)时,所选选项是正确的,但如果他们在此示例中选择了“其他”,则字段不是正确的。它会改为显示“属性”字段。
如果用户返回页面进行编辑,我如何才能根据用户选择的选项显示正确的字段?
ty
【问题讨论】:
-
您只在更改事件上运行逻辑,所以在用户更改任何内容之前没有什么会导致此逻辑运行,对吧?你需要让它在更改和初始加载时都运行
标签: javascript jquery ruby-on-rails show-hide