【问题标题】:Ruby on Rails: jQuery datepicker - dates between validation [closed]Ruby on Rails:jQuery datepicker - 验证之间的日期 [关闭]
【发布时间】:2012-10-09 20:48:37
【问题描述】:

我有一个应用程序允许用户创建新项目,并在以后搜索它们。他们在创建项目时拥有的选项之一是为他们提供开始和结束日期。目前,所有代码都可以正常创建和搜索日期,但我现在想限制用户可以输入的日期。

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

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"});
});

但是脚本没有运行。我是 Rails 和 javascript 的新手,因此非常感谢任何帮助。提前致谢。

更新: 不知道为什么我的问题被投票关闭。很简单:

当用户尝试输入早于开始日期的结束日期时,我需要一个错误来标记。我该怎么做??

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby datepicker


    【解决方案1】:

    我把我的验证了

    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 验证

    【讨论】:

      【解决方案2】:

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

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

      这允许用户只选择 minDate 和 maxDate 之间的日期(其余日期显示为灰色)。看看这个http://jqueryui.com/datepicker/#min-max。希望它有所帮助

      【讨论】:

      • 感谢您的帮助。我也看到了这一点,但这并不能解决我的问题,因为这些项目可能会持续数年。还是谢谢
      猜你喜欢
      • 2012-07-23
      • 2017-01-20
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多