datepickerのカレンダーにnヶ月前ボタンを加えたい
カレンダー本体に仕込むのはやめた。
search.html.erb
こんな感じかな?
<%= fields_for(:cond) do |r| -%> <input type="button" id="Ago" name="Ago" value="六ヶ月前" class="button_link" /> <%= r.text_field :day_from, :size=>"15", :class=>"datepicker" %>
hoge.js
日付を取得してDate型に変換して処理してブチ込む。変換のところってスマートな書き方ってないものかな・・・?
$("#Ago").click(function(){ var t_day=$("#cond_day_from").val().split("-"); active_f={}; active_f.year=t_day[0]; active_f.month=t_day[1]; active_f.day=t_day[2]; prev_day=new Date(active_f.year, active_f.month-1, active_f.day); prev_day.setMonth(prev_day.getMonth()-6); $("#cond_day_from").val(getDateFormat(prev_day)); });
ちょっとだけスマート、、、ハッシュの所は使いまわすことが前提なのだ。
$("#Ago").click(function(){ var t=$("#cond_day_from").val().split("-"); var act = {year: t[0], month: t[1], day: t[2]}; var pre = new Date(act.year, act.month-1, act.day); pre.setMonth(pre.getMonth()-6); $("#cond_day_from").val(getDateFormat(pre)); });
使いまわさないなら、これが現実的な最短かな?
$("#Ago").click(function(){ var t=$("#cond_day_from").val().split("-"); var pre = new Date(t[0], t[1]-1, t[2]); pre.setMonth(pre.getMonth()-6); $("#cond_day_from").val(getDateFormat(pre)); });