2015-07-13 55 views
0

问题是我有我的rails应用程序中的几个文本字段是基于我的用户的日期与这个日期我想比较它他们为我的文本框leave_start选择的日期。我想要发生的事情是,如果他们选择的leave_start日期大于或等于今年的anv日期,那么如果离开开始日期小于或等于他们的anv,则将我未来的文本框改为“YES”改变未来的文本框来说'不'。我尝试了几种不同的方式,但每次无论我选择什么日期,即使日期大于我的用户的anv,它总是将未来更改为“NO”。任何帮助将不胜感激!!!想改变东西的价值,如果它的大于或等于在javascript的东西

*注意这是我的datepicker默认格式dateFormat:'mm-dd-yy' 我的leave_start文本字段。

这里是我的application.js

$(document).ready(function(){ 
    $('#leave_start').change(function() { 

     var anv = $('.anv').val(); 

     var l_start = $('#leave_start').val(); 

     if (l_start >= future) { 
      $('#future').val('YES'); 
     } else if (l_start <= future) { 
      $('#future').val('NO'); 
     } 
    }); 
}); 

这里是我的看法

#this is the my var anv... 


%td.lt= f.text_field :grab_date, :id => 'anv', :class => 'anv', :value => @grab_adj.strftime('%m-%d-%Y') 



#this is my var l_start... 

%td.lt.feed= f.text_field :leave_start, :label => false, :id => 'leave_start', :input_html => {:value => ''} 



#this is the future text box I want to change to 'YES' or 'NO' 

%td.lt.feed= f.input_field :future, :as => :select, :id => 'future', :class => 'future', :label => false, :collection => ["YES", "NO"] 

回答

1

第一件事,不使用2位数年份格式为流行的错误Y2K Bug. 的讨论原因比较您转换日期为毫秒,则比较日期之前。

$(document).ready(function(){ 
    $('#leave_start').change(function() { 

    var anv_date = Date.parse($('.anv').val()); // Date in milliseconds 
    var l_start_date = Date.parse($('#leave_start').val()); // Date in milliseconds 

    if (l_start_date >= anv_date) { 
     $('#future').val('YES'); 
    } else if (l_start_date <= anv_date) { 
     $('#future').val('NO'); 
    } 

    }); }); 
+0

谢谢@Mukesh Singh Rathaur工作! – Snowman

0

的事情是,你不能在JavaScript中比较2个日期字符串。有几种方法可以进行这种比较。其中之一是使用Date对象(Compare two dates with JavaScript)。我认为更好的其他替代方案是使用像moment.jshttp://momentjs.co)这样的库,可以将日期操作变成小菜一碟。