根据轨道集合选择(选定)项显示不同的控件
Show different controls depending on rails collection select (selected) item
很抱歉我的问题没有更好的标题,但希望我的解释能让你们更好地了解发生了什么?
我有一个模型Airport
和三个其他模型West
、East
和South
,它们无论如何都不相关,只是Airport
模型需要一些其他字段,如此表单所示。
<%= form_for(@airport) do %>
<%= f.collection_select(:airport_name, AirPortManager.all, etc...) %>
//AirPortManager is a collection of available airports
<div class="west-airports" style="display:none;">
<%= f.collection_select(:airline_name, WestAirlineManager.all, ....) %>
</div>
<div class="east-airports" style="display: none;">
<%= f.collection_select(:airline_name, EastAirlineManager.all, ....) %>
</div>
<div class="south-airports" style="display: none;">
<%= f.collection_select(:airline_name, EastAirlineManager.all, ....) %>
</div>
<% end %>
机场型号validates :airline_name, :presence => true
。现在问题出在上
我的javascript。如果用户在AirPortManager.all
中选择了airport west,则应显示west-airports
div`,依此类推。但我的验证方法airport不断抛出一个必需的字段错误:airline_name,如果不是,则保留以前选择的值。我如何将可见的div值传递给机场参数,或者如果我选择了一个空值,则前一个值不应保持不变。下面是我的javascript,希望我的问题有意义。
<script type="text/javascript">
$(document).ready(function() {
$("#aiport_manager_aiport_name").change(function(){
var value = this.value;
if (value == "West") {
$('.west-aiports').show();
$('.east-airports').attr("disabled", true);
$('.east-airports').hide();
$('.south-airports').attr("disabled", true);
$('.south-airports').hide();
}
else if (value == "East") {
$('.east-airports').show();
$('.west-aports').hide();
$('.west-airports').attr("disabled", true);
$('.south-airports').hide();
$('.south-airports').attr("disabled", true);
}
else if (value == "South") {
$('.south-aiports').show();
$('.west-airports').hide();
$('.west-airports').attr("disabled", true);
$('.east-airports').hide();
$('.east-airports').attr("disabled", true);
}
});
});
</script>
我尝试在它们各自的div中禁用其他collection_selections,但仍然会得到一个验证错误或一个持久值。
您的表单有多个名称相同的元素(:airline_name),这是核心问题。禁用是正确的,但您禁用的是div而不是select。我会这么做:
// before form is submitted, disable all hidden selects
$('form').on('submit', function(e) {
$('select:hidden').prop('disabled', true);
});
相关文章:
- 音频控件在mouseover上显示,在mouseout上淡出
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- Firefox-当不在输入控件上时隐藏焦点高亮显示
- 获取中继器控件ASP.Net中显示的单击项目文本框
- 如何在Asp.net标签控件中显示Javascript函数值
- 如何隐藏和显示标签控件JavaScript
- 为什么WebBrowser控件在保存后不能正确显示HTML
- 显示使用 Jquery 的控件的错误消息
- Angularjs:目录分页控件没有'即使按下页面按钮,也不会显示下一页
- 基于下拉选择显示/隐藏控件mvc 4 razor c#
- 在ScriptUI控件的窗口已经显示后更改该控件
- 将页面控件添加到数据表,但当代码运行时,页面中不显示任何内容
- HIde / 在嵌套的 FormView 中使用 Javascript 显示控件
- Lightswitch HTML 自定义控件仅显示一次
- 不显示带有搜索的重复控件中的新文档
- 使剑道 UI 下拉列表将“选择控件”的“标题”属性显示为剑道工具提示
- 在 AngularJS 中显示加载栏时禁用控件
- 播放HTML5视频时显示控件
- 在JQuery Mobile中动态显示控件
- 显示控件在php/mysql悬停