我创建了一个下拉表单,当选项为“other”时显示文本框。另一个选项工作正常,用户可以添加另一个选项,但如果用户选择“其他”选项以外的任何选项,则验证失败并显示“这不能为空”。
所有这些都在_form.html.erb页面上完成,这里是HTML和Ruby:
<div class="field">
<%= f.label 'Escola' %><br>
<%= f.select(:school, ["FGV", "Other"]) %>
<%= f.text_field :school, class: "school-show", style: "display: none;"%>
</div>
这是jquery:
<script>
$(document).ready(function(){
$('#professor_school').change(function() {
if(this.value == "Other") {
$('.school-show').show();
}else{
$('.school-show').hide();
}
});
});
</script>
我认为问题在于我有两个字段试图将数据库中的“school”列放入,这导致了问题,但我可能错了,我不知道在这周围。
答案 0 :(得分:1)
我不知道这是否是“最佳做法”,我确信有更好的方法,但我会做的是每次下拉更改时设置文本字段的值。像
这样的东西$(document).ready(function(){
$('#professor_school').change(function() {
if(this.value == "Other") {
$('.school-show').val('');
$('.school-show').show();
}else{
$('.school-show').val(this.value);
$('.school-show').hide();
}
});
});
我在这里展示了它https://jsfiddle.net/8os10o8L/,它只是简单的HTML,但你明白了。也许可以更改下拉列表中的参数或将其从表单中删除,这样就不会遇到进一步的问题。