我希望能够为我的日期选择器设置一个随机日期
I want to be able to set a random date for my datepicker
我有一个名为 leave_start
的日期选择器,我希望能够设置一个非静态的最短日期,以便人们可以选择他们 select 编辑后的日期。我怎么能去做这样的事情,出于某种原因,当我点击未来 select 框时,它不会重新加载日期选择器,我该如何解决这个问题?
因此,当他们 select 对未来的 select 框选择是或否时。它将相应地重新格式化日期选择器。
所以这是我的观点,其中 sick_day 输入将是病假文本字段将是他们设置的最短日期。
=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 {
}
});
});
我试过了,但出现错误(类型错误:“#sick_day”。val 不是函数)
修复了忘记 var 前面的 $ 的问题 new_day = ('#sick_day').val();
日期选择器初始化后更改选项的方法不同see API
需要在更改值pair/array前添加"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 });
}
});
});
我有一个名为 leave_start
的日期选择器,我希望能够设置一个非静态的最短日期,以便人们可以选择他们 select 编辑后的日期。我怎么能去做这样的事情,出于某种原因,当我点击未来 select 框时,它不会重新加载日期选择器,我该如何解决这个问题?
因此,当他们 select 对未来的 select 框选择是或否时。它将相应地重新格式化日期选择器。
所以这是我的观点,其中 sick_day 输入将是病假文本字段将是他们设置的最短日期。
=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 {
}
});
});
我试过了,但出现错误(类型错误:“#sick_day”。val 不是函数)
修复了忘记 var 前面的 $ 的问题 new_day = ('#sick_day').val();
日期选择器初始化后更改选项的方法不同see API
需要在更改值pair/array前添加"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 });
}
});
});