我有一个应用程序,允许用户创建新项目,并在以后搜索它们。创建项目时他们拥有的选项之一就是为他们提供开始和结束日期。目前,所有代码都可以正常用于创建和搜索日期,但我现在想要限制用户可以输入的日期。
当用户尝试输入开始日期之前的结束日期时,我需要标记错误。用户创建项目时更是如此。这是我到目前为止的代码=>
的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的新手,所以任何帮助都是值得赞赏的。提前谢谢。
更新: 不知道为什么我的问题被投票结束了。这很简单:
当用户尝试输入开始日期之前的结束日期时,我需要标记错误。我怎么能这样做?
答案 0 :(得分:2)
当我使用我的应用程序(需要类似的东西)时,我没有找到合适的解决方案,但是我只是使用datepicker来指定用户可以选择日期的范围:
$( "#datepicker" ).datepicker({ minDate: -20, maxDate: "+1M +10D" });
这允许用户仅选择minDate和maxDate之间的日期(其余日期显示为灰色)。看看http://jqueryui.com/datepicker/#min-max。希望它有帮助
答案 1 :(得分: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验证