当选择“其他”时,Rails下拉列表会显示文本框

时间:2016-11-02 19:07:54

标签: jquery ruby-on-rails

我创建了一个下拉表单,当选项为“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”列放入,这导致了问题,但我可能错了,我不知道在这周围。

1 个答案:

答案 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,但你明白了。也许可以更改下拉列表中的参数或将其从表单中删除,这样就不会遇到进一步的问题。