jquery.ui.datepicker.mobile.js を使った際の日付選択イベント抽出

行いたかったのは、jquery.ui.datepicker.mobileで作られたカレンダーの日付をタップ(クリック)された際のそのイベントを検出すること。
jQueryのlive(type, fn)を利用すればよいということがやっとわかった。
bind関数との違いはbind(type,fn)を利用した場合、動的に後付された要素に対してはイベントの割り当てが行われないが、live(type,fn)の場合は後付された要素に対してもイベントハンドラが割り当てられる。
したがって、jquery.ui.datepicker.mobileで後付されたカレンダーの要素に対してイベントハンドラの割り当て(タップ・クリック時のイベントの割り当て)を行おうと思ったらlive(type,fn)を利用しなければいけならない。

以下、サンプル。
カレンダー中の日付をタップした際に選択された日付に対応する年月日がalertで表示されるもの。

<html>
<head> 
<meta charset="utf-8"> 
<meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1"> 
<link rel="stylesheet"  href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css" /> 
<link rel="stylesheet"  href="css/jquery.ui.datepicker.mobile.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.min.js"></script> 
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script> 
<script type="text/javascript" src="js/jQuery.ui.datepicker.js"></script> 
<script type="text/javascript" src="js/jquery.ui.datepicker.mobile.js"></script> 
<script type="text/javascript">
    $(".ui-datepicker-calendar").ready(function() {
        $("td").live("click", function(){
            alert($("#datepicker").val());
        });
    });
</script>
<body>
<div data-role="page" data-theme="b" id="jqm-home">
<div data-role="content">
<form action="#" method="get">
<input type="date" name="date" id="datepicker" value="" >
</form>
</div>
</div>
</body>
</html>

もっとも、datepickerのAPIイベントハンドラの操作できそうな気もするのだが…。
いろいろ探してみたが見つけられなかった。

未解決: jquery.ui.datepicker.mobile.js を使った際の日付選択イベント抽出

その後解決→jquery.ui.datepicker.mobile.js を使った際の日付選択イベント抽出

jQuery mobileとjQuery.uiのdatepickerを利用してスマートフォン向けの日付選択ダイアログを作るところまではうまくいっているのだけど、どうしても日付の選択のイベントを検出できない。

<html>
<head> 
<meta charset="utf-8"> 
<meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1"> 
<!-- 中略 -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.min.js"></script> 
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script> 
<script type="text/javascript" src="js/jQuery.ui.datepicker.js"></script> 
<script type="text/javascript" src="js/jquery.ui.datepicker.mobile.js"></script> 
<script type="text/javascript">
    $(document).ready(function() {
        $("#datepicker").datepicker({
            onSelect:function(dateText, inst){
                alert("foobar");
            }
        });
    });
</script>
<!-- 以下略 -->

表示は問題ない。あと、日付の選択状態になるのも問題無し。

f:id:hideack:20110611170848p:image

本当はカレンダーから日付を選択されたら"foobar"とダイアログ表示させたいのだけれども表示されない。
はて、何か勘違いしているかなぁ…。

i386とプログラミングと私

久しぶりにblog更新。
家の机周りの片付けなど。壮大に散らかっていた机の上を整理する。
以前引っ越しをしてから、大雑把に片付けたままの状態がずっと続いていたので、現在の様な状況*1でないと重い腰も上がらなかったりするのでいい機会だと思って朝から作業。
引っ越してきたにもかかわらず、捨てるものがたくさん出てきたのでいらないものはまとめつつ片付けた。
片付けをしているとCPUが出てきた。…えぇ、普通の人ではありえないフレーズですね。

f:id:hideack:20110610104216j:image

intel i386DX 20MHz の石である。大分、裏のピンが曲がってしまっているけど、小さい小物類をまとめた袋の中から出てきた。
自分が小学生のときに初めてしっかり触ったパソコンのPC-9801DAに搭載されていていたCPUでパソコン本体を廃棄する際に記念に引っこ抜いておいたもの。
CPU自体にファンも要らないCPUだったからすぐに手で引っこ抜けたんじゃなかったかな。
当時、パソコンで何していたかと思いだせば、

  • プログラミング
    • N88BASICとかQuickBASICでクイズゲームとかすごろくゲーム作ったり、ベーシックマガジンに掲載されていたプログラムを入力したり...。
  • ゲーム
    • 信長の野望とか大戦略、あとBio100%のゲーム
    • そういえば花王フロッピーディスクをつくっていたのだけど、その10枚入フロッピーディスクに1枚ゲームの体験版が付いていてよく遊んだ。
    • 体験版といってもかなりしっかり出来ていて「花王ダービー」という競馬ゲームとか遊んだ記憶がある。競馬よくわからないのに(苦笑)
  • 家計簿
    • 何故か親の代わりに一時期、家計簿いれていた記憶がある。「てきぱきマム」だったかな。
  • 音楽

とかかなぁ。

あと、中学校の頃にいたっては、英語を習っていた先生が産休で休む前に「子供が産まれるまで時間つぶしするときのゲームが欲しい」と言われて、フリーソフトのゲーム詰め合わせを作ってあげた記憶がある。QuickBASICで作った自作のランチャー*2付けて。
あの頃の集中力は自画自賛だけれどものすごくて、破竹の勢い*3でBASICを書いていた記憶がある。もっとも、今考えるともっと別の手段あったんじゃないかい?とも思えるけど、当時はそうやって自分自身が作ったものと他の何かが連携するというのを見て、それを使ってもらえるのが楽しかったのだろうなぁ。

こんな振り返りをしているのは、これからどうしようかと悩んでいるからで。
お前には向いてないとも上司に言われたことも過去ありながら続けてきたエンジニア稼業を続けていいものか。それとも思い切って別の職業もあるのかな。と迷いながら。

それでもやっぱり自分はこの職業を続けたいのかなぁ。それしかできないかな。
プログラム書くの嫌いじゃないからな。

*1:所謂、浪人状態

*2:まぁ、カーソルでゲームを選んでEnterクリックでそのソフトが起動する単純なものだが。

*3:当社比