在向导表单中使用按钮提交值的最佳方式
Best way to submit a value with a button in a wizard form
我一直在尝试创建一个向导表单,它基本上是一系列"是"或"否"问题。表单中还有几个页面,用户在继续操作之前必须选择多个选项。
现在,所有的对象参数大多是布尔值,但我看到的所有向导示例都涉及基本形式(text_fields、check_box等)
我想我可能会做这样的事情:
<div class="button1">
<%= f.hidden_field :newsletter, value: "1" %>
<%= f.submit "Yes" %>
</div>
<div class="button2">
<%= f.hidden_field :newsletter, value: "0" %>
<%= f.submit "No" %>
</div>
但这似乎并没有节省价值。我正在为向导使用邪恶的宝石,并遵循这个RailsCast教程
注意:像text_fields这样的普通字段保存,只是不保存这些按钮布尔值。
这两个按钮和隐藏字段都在同一个表单中。因此,任何一个按钮都会提交表单,当表单提交时,它会将所有字段的值收集到params中。
您可以做的是将按钮本身作为输入,通过参数发送。这是通过"名称"answers"值"属性完成的,就像任何其他属性一样:
<input type="submit" value="foo" name="bar" />
<input type="submit" value="chunky" name="bacon" />
现在,如果你用第一个按钮提交,你会在params中得到:bar => "foo"
,如果用第二个按钮提交你会得到:bacon => "chunky"
。
传统名称是"提交"。当您使用rails submit_tag时,它会将"name"设置为"commit",并将"value"设置为按钮的文本。因此,您应该在params中看到:commit => "Yes"
或:commit => "No"
,并相应地更改您的逻辑。
最好使用jQuery来触发事件,并相应地添加隐藏的输入
<div class="button1">
<%= f.submit "Yes", class: "wizard-btn" %>
</div>
<div class="button2">
<%= f.submit "No", class: "wizard-btn" %>
</div>
... ...
示例coffeescript代码如下所示:
jQuery ->
$(".wizard-btn").on "click", (e) ->
e.preventDefault()
thisForm = $(".wizard-form")
hideDiv = "<input type='"hidden'" name='"newsletter'" />"
if $(this).val() == "Yes"
thisForm.append $(hideDiv).val("1")
else if $(this).val() == "No"
thisForm.append $(hideDiv).val("0")
thisForm.get(0).submit()
其中,我假设您的表单具有名为wizard-form
的类
相关文章:
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- 提交表单后的最佳解决方案
- 临时存储用户表单数据的最佳方式,用于表单重新提交
- 在向导表单中使用按钮提交值的最佳方式
- 提交多个输入字段 jQuery/PHP 的最佳方式
- 提交后从选择下拉列表中自动选择选项的最佳方法
- 使用Express从您的提交中获得.gitignore API密钥的最佳实践是什么
- Django Javascript:提交表单的最佳方式
- 处理通过ajax提交的表单中的错误的最佳实践
- 点击提交用户输入的最佳方式
- Angularjs:我想编辑提交到我的后端nodejs>Mongodb.我应该遵循的最佳设计是什么
- 按需加载选项卡和表单提交的最佳方法
- 使用Jquery/Javascript在提交和重定向时验证表单的最佳实践
- 每次完成一个部分时提交表单的最佳方式
- 表单提交执行JavaScript最佳实践
- 用React Redux提交表单数据的最佳方式
- 使用Javascript表单提交的最佳方式
- Angular AJAX验证器.在验证过程中防止提交的最佳方法
- 在一个页面上有多个表单时提交表单的最佳实践
- 使用jQuery,四舍五入和提交匹配元素的最佳方式