2014-02-21 45 views
0

我有我的代碼的下面的代碼片段。JavaScript onChange for Date不工作

<tr> 
      <td> 
       <%= "MHC Date" %> 
      </td> 
      <td> 
       <%= text_field :candidate_mhc_detail, :mhc_date, :class => 'txtinputs', :id => "mhc_date", :value => showdate(Date.today), :style => ["width:80px;"], :onChange => "return validate_date();" %> 
       <a id="_mhc_date_link" onclick="DatePicker.toggleDatePicker('mhc_date')" class="demo_link"><img src="/images/calendar.png" width="20" height="20" /></a> 
       <div id="_mhc_date_calendar" class="date_picker" style="display:none"> 
       </div> 
      </td> 
     </tr> 

文本字段的值,即,MHC日期是默認設置爲Date.today,如果該值被改變,我需要執行顯示出「MHC日期應該是今天的日期」 JavaScript警告,但我遇到問題,onChange

我的JavaScript執行此瑪:

function validate_date(){ 
     if ($F('mhc_date') != Date.today) 
     { 
      alert("Date should not be greater than Today's Date") 
     } 
    } 

任何幫助,不勝感激!謝謝!

+0

爲什麼downvote?我沒有提供足夠的數據嗎? – Pavan

+0

而不是使用驗證JavaScript函數,我會簡單地定義DateField的範圍。 – dennis

+0

@dennis你可以更新一個答案,這將對我非常有幫助。 – Pavan

回答

0

首先,我鼓勵你不要使用內聯Javascript。嘗試儘可能使用UJS,而不是添加onchange =「blah」。嘗試添加一個事件處理程序,在原型中,我認爲這是使用observe完成的。

其次,Javascript沒有Date.today調用。所以這會出錯。嘗試構建它,所以從警告onchange函數是否已被觸發開始。然後提醒文本框的值和今天的值(new Date())然後檢查相等的結果。

0

而不是使用驗證的嘗試定義的DateField的範圍內,作爲標籤建議您使用Ruby on Rails的:

<%= form_for @new_object do |f| %> 
    <%= f.text_field :date_attribute, id: 'date_select_me'%> 
<% end %> 

<script> 
    $('#date_select_me').datepicker({ 
    minDate: '-1Y', 
    maxDate: new Date(), 
    }); 
</script> 

此方法使用的jQuery UI的DatePicker的,這個配置將允許用戶選擇1年前到今天之間的日期。

來源: http://jqueryui.com/datepicker/#min-max