どうもこんにちは。ひよっこプログラマーです。(ぇ
仕事で非常に苦しんだ、
datetimepicker!!
Struts2上で動く、カレンダーから選択した日付を入力させるプラグインです。
詳しくはこんなの→
Struts 2 datetimepicker example (海外のサイトです)
日本語に訳してくれているライブラリの詳細はこちらを参照
→
ソフトウェア技術ドキュメントを勝手に翻訳:datetimepicker
そしてもうひとつ、
私が最初に苦しんだ文字化けの直し方を書いてくださっている方がいらしたので、
勝手にリンク貼っておきます。(許可とってなくてすみません。。。
→
datetimepicker プルダウン画面の文字化け?
ここまで検索してなんとか使えるようにはなったのですが、
valueの値をJavaScriptから変更させようとしても
どーーーーやっても値が変わらない!(画面に映らない!)
苦しむこと2週間。
(長い。)
ふと思いついて、Safariで画面のソースを見てみたら、
Struts2独自タグがこんなふうにHTMLタグとして展開されていることを発見。
---------------------------------------------
▼Struts2 (testDateの初期値は2014/04/01)
<sx:datetimepicker name="test" value="%{testDate}" displayFormat="yyyy/MM/dd"/>
▼HTML(あまりにも長いのでspanタグの中身の一部抜粋)
<input type="hidden" name="test" value="2014-04-01T00:00:00+09:00" dojoattachpoint="valueNode">
<input name="dojo.test" type="text" value="" style="vertical-align: middle; width: 7em;" dojoattachpoint="inputNode" autocomplete="off">
---------------------------------------------
なんと!2行に分かれてるじゃないかー!!(衝撃)
というわけなので、
↓jsp内にこういう風に書けばそれっぽくなりました。めでたしめでたし。
---------------------------------------------
▼まずはダメだった例
document.getElementsByName("test")[0].value = "2014/04/14";
---------------------------------------------
あ、[0]になってるのは、複数行の入力フォームだったからです。
ID名指定しておけば、普通にgetElementsByIdでいけるはず。
(やってない)
これでずっと、
できないよーうわーん、ってなっていました。
↑のソースを見ればもうお分かりですよね。
hiddenのほうにだけ値が入っていたわけです。
---------------------------------------------
▼こちらが成功例
document.getElementsByName("test")[0].value = "2014/04/14";
document.getElementsByName("dojo.test")[0].value = "2014/04/14";
---------------------------------------------
つまり、dojo.testにも同じものを入れちゃえばおっけーということでした。
セットするための関数があるのかな、とか、dojoってなんだ!?、とか、
いろいろ悩みましたがソースの分解が一番手っ取り早かったです。
正しいやり方じゃなかったらすみません。