【问题标题】:I want to be able to set a random date for my datepicker我希望能够为我的日期选择器设置一个随机日期
【发布时间】:2015-04-24 14:52:18
【问题描述】:

我有一个名为 leave_start 的日期选择器,我希望能够设置一个非静态的最小日期,以便人们可以选择他们选择的日期之后的日期。我怎么能做这样的事情,并且由于某种原因,当我点击未来选择框时它不会重新加载日期选择器,我该如何解决这个问题?

因此,当他们为将来的选择框选择是或否时。它将相应地重新格式化日期选择器。

所以这是我的观点,其中病假日输入将是病假日文本字段将是他们设置的最短日期。

=simple_form_for @entry, :url => url_for(:controller => 'entry', :action 

%td.lt= f.error :range_days, :class => 'er'

%table.table.table-bordered.table-striped{:style => 'table-layout:fixed; width:100% !important;'}

  %td.lt= f.text_field :sick_day, :id => 'sick_day', :placeholder => 'Optional Comment', :input_html => {:value => ''}
  %td.lt= f.error :indirect_id, :class => 'er'

%table.table.table-bordered.table-striped{:style => 'table-layout:fixed; width:100% !important;'}
  %th.lt
  %td.lt= f.input_field :future, :as => :select, :id => 'future', :label => false, :collection => ["YES", "NO"]
  %td.lt= f.error :future, :class => 'er'

%table.table.table-bordered.table-striped{:style => 'table-layout:fixed; width:100% !important;'}
  %th.lt Leave Start:
  %td.lt= f.text_field :leave_start,  :label => false, :id => 'leave_start', :input_html => {:value => ''}
  %td.lt= f.error :leave_start, :class => 'er'


%table.table.table-bordered.table-striped{:style => 'table-layout:fixed; width:100% !important;'}
= f.button :submit, "Submit", :class => 'customSub'

这是我的 JavaScript

 $(document).ready(function(){
    $('#future').click(function() {
       var selected = $(this).val();
       var new_day = $('#sick_day').val();
       if (selected == 'YES') {
          $('#leave_start').datepicker({minDate: new_day });
       }
       if (selected == 'NO') {
          $('#leave_start').datepicker({minDate: 0, beforeShowDay: $.datepicker.noWeekends });
       } else {
       }
    });
  });

我试过了,但出错了(TypeError: "#sick_day".val is not a function)

修复了这个忘记 var new_day = ('#sick_day').val(); 前面的 $ 的问题

【问题讨论】:

  • 缺少$var new_day = $('#sick_day').val() 我猜!
  • ('#sick_day').val(); 不是函数,但 $('#sick_day').val(); 可能是。
  • 好的,我修复了函数错误,但是由于某种原因,当我为#future 单击 NO 或 YES 时,它不会为正确的日期重做 datepicker,我必须刷新页面才能看到效果.

标签: javascript jquery date datepicker


【解决方案1】:

在 datepicker 初始化之后,更改选项的方法不同 see API

需要在改变的值对/数组前加上"option"

试试这个:

$(document).ready(function(){
    //create datepicker
    $('#leave_start').datepicker();

    $('#future').click(function() {
       var selected = $(this).val();
       var new_day = $('#sick_day').val();
       if (selected == 'YES') {
          $('#leave_start').datepicker("option", "minDate", new_day );
       } else if (selected == 'NO') {
          $('#leave_start').datepicker("option", {minDate: 0, beforeShowDay: $.datepicker.noWeekends });
       }
    });
});

【讨论】:

  • 我试过了,现在我的日期选择器没有出现。 @Cobote
  • 查看我的编辑。我的方法不会创建日期选择器。您的脚本正在更改选项,然后创建日期选择器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
相关资源
最近更新 更多