【发布时间】:2016-10-04 18:58:59
【问题描述】:
我正在尝试将附加字段“部门”添加到现有的设计注册模板。我正在尝试实现一个下拉列表,其中包含一个部门列表,如 dept1、dept2 ....、not_listed。选择 not_listed 时,我想显示文本框,用户可以在其中输入自定义部门并将部门的值存储在数据库中,而不是未列出。
这里是代码。
<div class="border-form-div">
<h3 class="text-center">Create a new account</h3>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div class="form-group">
<%= f.email_field :email, :autofocus => true, :placeholder => "Email address", class: "form-control", required: false %>
</div>
<div class="form-group">
<%= f.password_field :password, :placeholder => "Password", class: "form-control", required: false %>
</div>
<div class="form-group">
<%= f.password_field :password_confirmation, :placeholder => "Confirm password", class: "form-control", required: false %>
</div>
<div class="form-group">
<%= f.select :department, options_for_select(["dept1", "dept2", "dept3", "dept4", "Not Listed"]), class: "form-control", html: { id: "dept-id"} %>
</div>
<div>
<ul><%= f.text_field :department, :placeholder => "enter your department", html: {id: "not_listed_1"} %></ul>
</div>
<script>
$(document).ready(function(){
$('#dept-id').change(function() {
var selected = $(this).val();
if(selected == 'Not Listed'){
$('#not_listed_1').show();
}
else{
$('#not_listed_1').hide();
}
});
});
</script>
<br>
<div class="text-center">
<div class="form-group">
<%= f.submit "Sign up", :class => "btn btn-primary", :id => "page[sign_up]" %>
<%= link_to "Cancel", new_user_session_path, class: "btn btn-default", :id => "page[cancel]" %>
</div>
</div>
我不擅长 jquery。有人能指出我哪里出错了吗?
【问题讨论】:
-
以上代码有什么问题?
-
加载页面时出现文本框。我希望只有在下拉列表中选择未列出时才会显示该文本框
-
默认使用
html: {id: "not_listed_1", style:"display:none"}隐藏文本框或为文本框添加class: "hidden" -
@Vijai:那行不通。文本字段仍然出现。
-
@tpdietz:加载页面时不应出现文本字段。它应该只在选择未列出后才会出现。
标签: javascript jquery ruby-on-rails devise