Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何隐藏部分rails 3表单,具体取决于从下拉菜单中选择的值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个部分的,_form用于我在rails中的一个视图.它看起来像这样
<%= form_for(@project) do |f| %>
  <div class="field">
    <%= f.label "Project Status" %><br />
    <%= f.SELEct :status,["In Progress","Cancelled"] %>
  </div>

  <div class="field">
    <%= f.label "Capital Cost" %><br />
    <%= f.text_field :capital_cost %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>

<% end %>

除非从下拉菜单中选择“进行中”,否则我希望表单的“资本成本”部分显示为灰色,而无需重新加载页面.这可能吗?我看到一些使用javascript的解决方案,但我是一个完全的初学者,无法理解他们(不幸的是我没有时间学习使用js之前我必须完成这个项目).干杯!

解决方法

@H_673_9@ 为此你需要一些JavaScript.使用onchange事件处理程序来监视< SELEct>输入变化.比较输入值并有条件地设置/取消设置#project_capital_cost输入上的禁用属性.你可以使用jQuery.

默认情况下,Rails 3通过在Gemfile中包含jquery_rails gem来启用jQuery.假设您的应用中包含了jquery_rails,并且< SELEct>和<输入>标签分别有#project_status和#project_capital_cost ID,通过必要的修改将以下脚本添加到_form部分:

<script>
  $(document).ready(function(){
     if($('#project_status').val() != "In Progress"){
        $("#project_capital_cost").attr('disabled','disabled');
     }
     else{
        $("#project_capital_cost").removeAttr('disabled');
     }

     $('#project_status').change(function(){
        if($(this).val() != "In Progress"){
          $("#project_capital_cost").attr('disabled','disabled');
        }
        else{
          $("#project_capital_cost").removeAttr('disabled');
        }
     })
  });

</script>

编辑:

隐藏div给它一些id:

<div class="field" id="my_div">
    <%= f.label "Capital Cost" %><br />
    <%= f.text_field :capital_cost %>
  </div>

然后更换

$( “#project_capital_cost”)ATTR( ‘禁用’,‘禁用’). with $(“#my_div”).css(‘display’,’none’)

$( “#project_capital_cost”)removeAttr( ‘禁用’).在脚本中使用$(“#my_div”).css(‘display’,’block’).

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 如何隐藏部分rails 3表单,具体取决于从下拉菜单中选择的值全部内容,希望文章能够帮你解决ruby-on-rails – 如何隐藏部分rails 3表单,具体取决于从下拉菜单中选择的值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。