在rails中选择向表单添加文本字段的最佳方式
What is the best way to add a text field to a form select in rails?
在rails 4中,我有一个带有三个选项的表单选择,其中一个选项被称为"其他",我想在其中显示一个文本字段,并将输入作为表单值发送到服务器。
.field
= f.label :answer, 'Please select..'
= f.select :answer, ['option a','option b','other...'], prompt: 'Select One'
#other
.other
= f.text_field :answer
model.js.coffee
jQuery ->
other = $('#other').html()
$('.other').remove()
if $('#mymodel_answer :selected').text() == 'other...'
$('#other').html(other)
$('#mymodel_answer').change ->
if $('#mymodel_answer :selected').text() == 'other...'
$('#other').html(other)
if $('#mymodel_answer :selected').text() != 'other...'
$('.other').remove()
这很有效,但感觉有点粗糙,还有什么其他方法可以做到这一点?
禁用的表单元素不会被提交,所以你可以添加一点CSS来隐藏禁用的东西:
input[disabled] {
display: none;
}
然后使用prop
在情况发生变化时启用/禁用额外的输入。因此,给定一些像这样的HTML:
<form>
<select name="s" id="s">
<option value="show">With extra thing</option>
<option value="hide">No extra thing</option>
</select>
<input type="text" id="t" name="t" placeholder="extra thing...">
<button type="submit">submit</button>
</form>
你可以说:
$('#s').change ->
disabled = $(@).val() == 'hide'
$('#t').prop('disabled', disabled)
以在CCD_ 3改变时显示启用/隐藏禁用CCD_。
演示:http://jsfiddle.net/ambiguous/LmAMR/
如果您不想使用CSS来隐藏禁用的元素,那么您只需要引入适当的show
和hide
调用:
$('#s').change ->
disabled = $(@).val() == 'hide'
fn = if disabled then 'hide' else 'show'
$('#t')[fn]().prop('disabled', disabled)
演示:http://jsfiddle.net/ambiguous/F8Dqn/
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 使用jquery将输入字段转换为文本
- 如何从查询字符串中的输入字段发回文本
- 表单输入字段随着溢出的文本而增长
- 使用单个文本框向多个字段添加严格搜索
- 使用javascript提交表单并从字段/单选框/复选框/文本区域获取数据
- 使用jQuery的输入字段文本换行
- 向使用jQuery加载DOM后添加的字段添加不受限制的文本输入DatePickers
- 当用户单击按钮(在光标位置)时,在输入字段中添加一个文本字符串
- 如何根据文本长度立即显示和隐藏字段?-JQuery
- 当输入字段(文本框)有值时,选中/取消选中复选框
- 重置时输入字段文本css
- 将输入字段文本放入变量中并将其用于 jquery JSON get 请求
- 在 html 输入字段 (文本框) 中插入 javascript (jquery) 变量
- 搜索字段文本没有't在FF 3.6中显示
- 主干集合url操作与输入字段文本
- 如何大写输入字段文本的第一个字母,而键入javascript
- 如何使用angularjs在同一字段中键入时动态格式化输入字段文本
- 如何将输入字段(文本框)添加到使用jQuery动态创建的表中