2010-03-27 1:45 pm

iPhoneのSafariのtextareaで文字数をカウントする方法 Edit

例えばtwitterアプリのような文字数制限のあるtextareaでは、よく「あと○○文字」とか文字数を数えて表示したりすることがある。先日仕事で、iPhone用のサイトで同じように文字数を数えて表示することが
あったんだけど、ちょっと変わったやり方をしたので紹介してみる。

仕様としては、文字を入力する毎に文字数を数えて、「あと○○文字」と表示するというもの。最初はkeyupを使ってPCのブラウザで確認してたんだけど、実機で試してみるとどうにも上手く動いてくれない。で、調べてみたところ、keyupのイベントはtextareaの内容が更新される前に呼びだされているらしい。
参考:Ajaxian » Safari on the iPhone update fixes and breaks events

なるほどと思い、さっそくsetTimeoutを設定して試してみるものの、英語キーボードの時は問題ないが、日本語入力の時にkeyupがreturnキーとbackspaceキーの時しか反応してくれない。

何か良い方法ないかなーとSafari向けのtwitterアプリサイトを見てまわってたら、Logpostというサービスで、実機の日本語入力時でもきちんと文字数を数えているのを発見。ちょっと失礼してソースを拝見させて頂いたところ、下記のようになっていた。

function count(e, l) {
if(! e) return;
var rc = l - e.value.length;
$('count').innerHTML = rc + ' left';
setTimeout("count($('" + e.id + "'), " + l + ")", 600);
}

setTimeout内で同じ関数を呼ぶことで、1秒おきに文字数を数えるようになっている。あとはonfocusとかでこの関数を呼びだすだけで、ほぼリアルタイムに文字数を数えることができる。

余談だけど、いろいろ調べているときに見つけたドキュメントに、javascriptからObjective-Cを呼び出す方法が書かれていた。意外な制限とかもあったりするけど、iPhoneSafariは夢が広がるなあ。

2009-04-16 11:14 pm

mootoolsのプラグイン集、phatfusion Edit

格好いいmootoolsのプラグインを見つけたので紹介。

phatfusion

JavascriptやFlashを使ったライブラリを開発しているらしく、ちょっと洒落たサイトを作るときに使いたくなるようなmootoolsのプラグインが公開されている。

プラグインの種類は以下の通り。

あとはFlashのコンテンツでgoogleDriveというのがある。これはキーボードを操作することで、真ん中に表示された車がGoogleMap上を走るというもの。GoogleMapを利用したコンテンツは沢山あったが、こういう発想のは見たことがなかったので、面白い。

2009-04-16 11:09 pm

Shift+クリックで複数選択できるチェックボックス with jQuery Edit

今日はjQueryのプラグインを紹介。

Gmailのように「shift + クリック」でチェックボックスの複数選択を可能にするjQueryプラグイン|JavaScriptプログラムメモ|プログラムメモ

エクスプローラとかでやるような、Shift+クリックで一気にチェックボックスを選択できるようにするプラグインです。

webのインターフェースだとチェックボックスって結構当たり前な感じだけど、正直ものすごく使いづらい。2, 3個なら良いけど、10とか20とかになってくると、もうだれてしまう人も少なくないはず。

このjQueryプラグインは、普段使い慣れたエクスプローラ等と同じ感覚で、チェックボックスを操作できるようなるので、多少は心地よく使えるようになるんじゃないかなと思う。

2009-04-16 11:07 pm

範囲選択に便利な、日付入力ライブラリ Edit

良い感じな日付入力用のJavascriptライブラリを見つけたので紹介。

Ajaxorized ≫ Introducing: The sliding date-picker

定規のような見た目の部分をスライドさせることで、日付の範囲選択をすることができるというモノ。こういうのはテキストボックスが2つあって、その二つにそれぞれカレンダーが付いているってのはよく見る。だけど、それをスライドで選択ってのはあまり見ないんじゃないだろうか。

導入は上記ページのとおりにスクリプトを読み込んで、デフォルトの日付と、選択できる範囲を指定するだけ。超簡単。ライセンスはGPLらしい。

ただし、サンプル通りに書くと月の表示が英語になっている。ここを数字とかに変えたい場合は、datejsのページでDatejs-all-Alpha1.zipを落としてから、Datajs-all/build/date-ja-JP.jsdate-en-US.jsと置き換える必要がある。ちなみにjp-JPを使った場合は数字表示になる。

で、実際に使ってみて貰ったところ、結構好評だった。使うシーンは限られるかもしれないけどね:-P

2009-04-16 10:55 pm

ナイスなスライドショウを実現する、30のスクリプト Edit

Awesome enough Slide Shows developed using jQuery, Ajax, Prototype.js, Ext.js, Lightbox JS, Mootools, YUI…..at Developer Snippets

Lightboxが出てから、こういう系のスクリプト増えたなぁとか思ってたんだけど、まさかここまで色々あるとは・・・。

本家が出てから、もう結構経つと思うけど、それぞれ特徴を盛り込んでいて良い感じ。
個人的にはjQueryを使ってるThickBox 3 あたりがオススメ。jQuery良いよjQuery。