Railsでdatetime_selectを操作
Railsでdatetime_selectを操作してみる。
一括でdisabled
jQueryでidの先頭一致を使って一括でdisabledにする。
$('[id^="xxx_yyy_"]').prop('disabled', true);
今日の日時を設定
:include_blank=>true指定がある場合で、空の要素の箇所だけ設定する。
function setVal(obj, val){ if(obj.val() != "") return; obj.val(val); }
Dateを取得して、その値を設定する。時間部は0埋め2桁なのでsliceで取得する。
now = new Date(); setVal($('#xxx_yyy_1i'), now.getFullYear()); setVal($('#xxx_yyy_2i'), now.getMonth()+1); setVal($('#xxx_yyy_3i'), now.getDate()); setVal($('#xxx_yyy_4i'), ("0"+now.getHours()).slice(-2)); setVal($('#xxx_yyy_5i'), ("0"+now.getMinutes()).slice(-2));
時間部を表示/非表示
時のxxx_yyy_4i、分のxxx_yyy_5iを表示show/非表示hideで切り替えるが、コントロールだけ消してもセパレータが残る。
- 表示
-
$('#xxx_yyy_4i').show(); $('#xxx_yyy_5i').show();
- 非表示
-
$('#xxx_yyy_4i').hide(); $('#xxx_yyy_5i').hide();
上のようにすると、下のような表示になる。
[ ▼][ ▼][ ▼] — [ ▼] : [ ▼] ↓ セパレータが残る [ ▼][ ▼][ ▼] — :
セパレータは:datetime_separatorと:time_separatorで任意の文字が指定できるが、タグも指定できるようになっているので、spanタグでnameを指定して表示/非表示を切り替える。
:datetime_separator=>"<span name='datetime_separator'>—</span>", :time_separator=>"<span name='datetime_separator'>:</span>"
指定したnameを使って一括で表示/非表示を切り替える。
- 表示
-
$('[name="datetime_separator"]').show();
- 非表示
-
$('[name="datetime_separator"]').hide();