タグ: #jQuery #JavaScript
ブラウザが落ちてもフォーム内容が消えないようにするjQueryプラグイン「jQuery autosave」:phpspot開発日誌
これと似たようなものを5年ほど前に必死に書いていました。これを使えばエレガントに実装できますね。今度機会があれば使ってみたいと思います。
2年前 | 固定リンク | 2010年 2月 13日 | 
ブラウザが落ちてもフォーム内容が消えないようにするjQueryプラグイン「jQuery autosave」:phpspot開発日誌
これと似たようなものを5年ほど前に必死に書いていました。これを使えばエレガントに実装できますね。今度機会があれば使ってみたいと思います。
submitボタンを押した瞬間にそれをdisabled(グレイアウト)にすることで二度押ししようにもできなくする、jQueryを使ったスクリプトである。おすすめする理由は次のとおり。
- jQueryだから。どうせ他の部分でもjQuery使っていることがあるので、そのついででシンプルなスクリプトで済むのなら、気分的にもラクだ。
- オリジナルにスクリプトを書こうとして素直に disabled=true とやるだけだと、次にいったページから「戻る」ボタンで戻られるとdisabledになったまま(Firefoxの場合)というワナがあるのだが、こいつはその点も考慮されている。
- どのformに作用させるかを、html側のデザイン次第でどうにでもできる。ページ内の全てのformではなく特定のformにだけ使いたいという場合もあるだろう。
- 例えばform id=”foo”とform id=”bar”の二か所だけに絞りたければ、
$(‘#foo’).disableOnSubmit();
$(‘#bar’).disableOnSubmit();
と2行書けばいい。- HTMLでは、id属性はwebページ内での重複が許されない。同一ページ内に複数のformがあって、それらにいちいち違うid属性を与えるのが面倒だというのであれば、class属性を使うのがいいだろう。form class=”foo” というclass属性を与えたformタグすべてに対して作用させたければ
$(‘.foo’).disableOnSubmit();
の1行で済む。また、cssではclass属性はタグに複数個設定できる。つまり form class=”aaa bbb” みたいにできるのだから、なんだったらデザイン(見栄え)制御用のclass属性とは別にdisableOnSubmit()専用のclass属性を追加してしまえばいい。- form onSubmit=”hogefunction()” のようにonSubmit属性でJavascriptを呼び出す手法をよく見かける。しかしこれはちょっと危険で、ブラウザの種類によってはJavaScript関数どころかform全体が動かなくなるケースがあるらしい。少し古いケータイ向けフルブラウザに多い。これはinput type=”submit” value=”hoge” onClick=”hogefunction()” のようにonSubmitではなくonClickでやっても似たような危険が伴う。ケースバイケースなのでなんとも言えないが、少なくとも formタグにはid属性やclass属性を指定するだけという手法ならその部分は普通のHTMLに過ぎない。よって、特殊なブラウザであっても動作不良を起こす可能性が低くなるんじゃなかろうかと。
- すぐにやめられる(笑)。「やってみたけど気にいらなかった」というときは、headタグ内のJavaScriptを消すだけだ。使わないid属性やclass属性をformタグに残したところで、どんなブラウザであれ動きにも見栄えにもまったく影響は残らない。
二重submit防止のjavascriptをjQueryで。
使いやすそうな2重送信防止JavaScript(jQuery)です。
ツールチップの機能、デザイン選びたい放題のjQueryのツールチッププラグイン30まとめ:phpspot開発日誌
ハイセンスでjQueryなツールチップが多数紹介されています。
フォーム要素にうっすらデフォルト値を入れてヒント表示できる「jQuery Form Tips」:phpspot開発日誌
こういう、JavaScriptが有効になっていると+αでユーザビリティーが上がるもの、いいですね。
ブラウザが落ちてもフォーム内容が消えないようにするjQueryプラグイン「jQuery autosave」:phpspot開発日誌
動的生成したフォームから別のページに遷移して戻ってきたときに入力内容が消えてしまいます。
その復元処理に使うと便利そうですね。
最大文字数が決まっているフォームで残り文字数が出ると助かります。