ruby-on-rails - 集合为 RadioButtons onclick
问题描述
如何为以简单形式创建单选按钮的集合实现自动提交?
我有这样的输入行,我想在单击任何按钮时提交。
=f.input :langcode, as: :radio_buttons, :collection => ['de','en'].map{|l| [image_tag('flag_'+l+'.png'), l]}, label: false
我试图在最后添加一个 onclick 选项,但它似乎没有做任何事情。
谢谢你的帮助。
解决方案
只需编写一些真正的 JavaScript:
// put this in your asset pipeline or packs
document.addEventListener('change', (event) => {
if (!event.target.matches(".submit-on-change")) return;
event.target.form.submit();
});
<form>
<div>
<input type="radio" id="male" name="gender" value="male" class="magic-button">
<label for="male">Male</label><br>
<input type="radio" id="female" name="gender" value="female" class="magic-button">
<label for="female">Female</label><br>
<input type="radio" id="other" name="gender" value="other" class="magic-button">
<label for="other">Other</label>
</div>
</form>
这将创建一个简单的可重用行为,您可以通过添加submit-on-click
类将其附加到任何元素。
input_html
您可以使用SimpleForm中的选项向输入添加一个类:
= f.input :langcode, as: :radio_buttons,
collection: ['de','en'].map{|l| [image_tag('flag_'+l+'.png'), l]},
label: false,
input_html: { class: 'submit-on-click' }
['de','en'].map{|l| [image_tag('flag_'+l+'.png'), l]}
虽然很臭 - 这应该从视图中提取到辅助方法或其他地方。
推荐阅读
- c# - 如何修复 C# 程序中的“cs0029”错误?
- node.js - 带有 node.js 的条带 webhook 的问题
- c - 使用 pthread 的计数器信号量究竟是如何工作的?
- conditional-statements - 使用 APEX_ITEM 在交互式报告中创建下拉列表时如何设置 APEX LOV?
- javascript - 进入视口时播放 SVG - 浏览器支持?
- javascript - Vue多选限制选项计数
- sql - postgres 过程值列表
- javascript - 将值传递给 React map 函数中的函数
- java - 如何使用java字符串方法返回选定数量的字符?
- android - 如何制作类似 Play 商店和 Gmail 的应用栏