我有select_date
我希望限制用户可以选择的月份。
<%= select_date(Time.now, :order => [:month, :day, :year ], :datetime_separator => '-', :time_separator => ':', :discard_seconds => true, :discard_minutes => true, :start_month => Time.now.month, :end_month => Time.now.month +1, :start_year => Time.now.year, :end_year => Time.now.year, :prefix => 'start_date') %>
然而,似乎没有办法做到这一点。您不能限制select_date显示的月数。有人可以解决这个问题吗?
答案 0 :(得分:1)
我知道,没有办法使用Rails来解决这个问题。
相反,我使用了这个:
http://code.google.com/p/calendardateselect/
限制日期范围:
<%= f.calendar_date_select :start_date, :embedded => true, :valid_date_check => "( (date.stripTime() < ((new Date()).stripTime()).setMonth(new Date().getMonth() + 1)) && ( date.stripTime().setDate(date.getDate() + 1) > (new Date()).stripTime()) )", :year_range => [Time.now.year, Time.now.year], :time => false %>
这允许我限制用户可以按任何范围选择的时间量,但在我的情况下按月计算。
答案 1 :(得分:0)
在验证中如何做?或者抛弃这些日期助手(无论如何,谁想要用它们输入日期,我的意思是......)并使用真正的日历javascript thingy。
我可以推荐http://www.dynarch.com/projects/calendar/old/。
我使用以下剪辑自动将它们添加到我的日期输入文本字段中。我们在这里使用dd.mm.yyyy年份样式,但将其更改为其他内容不应该花费太多时间。
function setupDateFields() {
$$("input.date").each(function(input) {
setupDateField(input);
});
}
function setupDateField(id, time) {
var field = $(id);
var img = new Element('img', {
src: "/images/icons/calendar.png",
alt: "date",
id: field.id + "_img",
"class": "dateIcon"});
field.insert({after: img});
var format = time ? "%Y.%m.%d %H:%M:%S" : "%d.%m.%Y";
Calendar.setup({
date : new Date(),
ifFormat : format,
showsTime : time,
inputField : field.id,
button : img.id,
firstDay : 1, /* sunday */
others : true
});
}
document.observe("dom:loaded", setupDateFields);