2012-10-19 32 views
-1

我有一个应用程序,允许用户创建新项目,并在稍后搜索它们。他们创建项目时的选项之一是给他们开始和结束的日期。目前,所有的代码都可以正常工作来创建和搜索日期,但我现在想要限制用户可以输入的日期。Ruby on Rails:jQuery datepicker - 验证日期

我需要在用户尝试输入开始日期之前的结束日期时标记错误。当用户创建项目时,这真的更多。这是到目前为止我的代码=>

的application.js

//= require jquery 
//= require jquery_ujs 
//= require jquery-ui 
//= require jquery.ui.all 
//= require_tree . 

$(function() { 
    $("#project_start_date").datepicker({dateFormat: 'dd-mm-yy'}); 
}); 
$(function() { 
    $("#project_end_date").datepicker({dateFormat: 'dd-mm-yy'}); 
}); 
jQuery(function(){ 
jQuery('#start_date_A').datepicker({dateFormat: "dd-mm-yy"}); 
}); 
jQuery(function(){ 

jQuery('#start_date_B').datepicker({dateFormat: "dd-mm-yy"}); 
}); 

新视角:

<div class="start_date" STYLE="text-align: left;"> 
    <b>Start Date:</b> 
    <%= f.text_field :start_date, :class => 'datepicker', :style => 'width: 80px;' %> 
    </div> 


<div class="end_date" STYLE="text-align: left;"> 
    <b>End Date:</b> 
    <%= f.text_field :end_date, :class => 'datepicker', :style => 'width: 80px;' %> 
    </div> 

搜索查看:

Start dates between 

<%= text_field_tag :start_date_A, params[:start_date_A], :style => 'width: 80px;' %> 


- 

<%= text_field_tag :start_date_B, params[:start_date_B], :style => 'width: 80px;' %></br> 

我尝试以下网上得到这个例子通过在文件的application.js这样做的工作:

$(function() { 
$("#project_start_date,#project_end_date").datepicker({dateFormat: 'dd-mm-yy'}); 
}); 

jQuery(function(){ 
jQuery('#start_date_A,#start_date_B').datepicker({dateFormat: "dd-mm-yy"}); 
}); 

但随后的脚本不运行。我是新来的铁轨和JavaScript,所以任何帮助都表示赞赏。提前致谢。

UPDATE: 不知道为什么我的问题已被投票结束。这很简单:

当用户尝试输入开始日期之前的结束日期时,我需要一个错误标志。我怎样才能做到这一点??

回答

2

我没有找到一个合适的解决方案时,我和我的应用程序(类似需要的东西)工作,但我只是用日期选择器来指定一个范围,用户可以挑选日期这样的:

$("#datepicker").datepicker({ minDate: -20, maxDate: "+1M +10D" }); 

这允许用户只在minDate和maxDate之间选择日期(其余日期灰显)。检查了这一点http://jqueryui.com/datepicker/#min-max。希望它有助于

+0

感谢您的帮助。我也看到了这一点,但这并不能解决我的问题,因为这些项目可能会持续数年。不管怎么说,还是要谢谢你 – Jazz

0

我把矿验证

validate :validate_end_date_after_start_date 

def validate_end_date_before_start_date 
    if project_end_date && project_start_date 
    errors.add(:project_end_date, "Project must begin before it ends") if project_end_date < project_start_date 
    end 
end 

,而不是担心直接jQuery验证