禁用rails app中的复选框输入

时间:2016-09-05 11:11:36

标签: javascript jquery ruby-on-rails checkbox

我在rails应用程序中的表单上有一个日期输入下拉列表。

我希望有一个复选框 - 当用户选中/选择时(#1)禁用日期输入,(#2)用当前日期填充日期输入。

我已经看过以前的SO答案,想知道如何做到这一点,这就是我试图完成的事情#1:

app/assets/javascripts/application.js

 //= require jquery
 //= require bootstrap
 //= require jquery_ujs
 //= require turbolinks
 //= require_tree .

$(document).on('change', '#availableNow', function(){
    debugger;
    if($(this).prop('checked')){
        $('#fromDatePicker').attr('disabled', 'disabled');
    } else {
        $('#fromDatePicker').removeAttr('disabled');
    }
});

表格......

app/views/apartments/_form.html.erb

   <div class="field">
      <%= f.label :available_now %>
      <%= f.check_box :available_now, id:"availableNow" %>
    </div>
    <div class="field">
      <%= f.label :to_date %><br>
      <%= f.date_select :to_date, {:include_blank => true, :default => nil, :start_year => Date.today.year, :end_year => Date.today.year + 4, :order => [:month, :day, :year] }, id:"fromDatePicker" %>
    </div>

Rails为日期选择器(日,月和年)生成3个下拉菜单。选中此框时,仅禁用月份(第一个下拉列表)。

如何让复选框功能适用于所有下拉菜单?

任何想法如何&#34;灰色&#34;一旦他们被禁用了下拉?

提前致谢!

1 个答案:

答案 0 :(得分:1)

首先检查从f.check_box生成的html,如果你能看到id:'your_id'

$('#availableNow').on('click', function(){
 if($(this).prop('checked')){
  $('#fromDatePicker').attr('disabled', 'disabled');
 } else {
  $('#fromDatePicker').removeAttr('disabled');
 }
})

对于禁用月份和年份,请检查生成的select_id并禁用它们