2015-07-13 109 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)這樣的庫,可以將日期操作變成小菜一碟。