2006-01-31 アーカイブ

http://hxxk.jp/2006/01/31/

フォーカスした際に、フォームの内容をクリアするやり方

記事データ

投稿者

望月真琴

投稿日時

2006-01-31T21:12+09:00

タグ
概要

フォームのある項目がフォーカスされた際に、その内容を JavaScript でクリアするやり方を紹介。と言ってもソース自体は LIPPiN ( http://acromo.org/lippin/ ) のものをそのまま使わせてもらいましたが。

リプライ

5 件のリプライがあります。

記事本文

フォーム周りのインターフェースをプチ改造しました

現在、 hxxk.jp では検索フォームコメント投稿フォームトラックバック送信フォームトップページのゲストブック投稿フォームなど、多くのフォームをページ内に配置しています。 今日ふと思い立って、それらの文面を入力する部分がフォーカスされた場合に、予め書かれていた文章をクリアするように変更しました。 いただいたコメントにお返事を返す際に、 コメント本文は必須となっています。 という文章を手動で消すのがどうにも煩わしい、でも最初からテキストエリア内を空白にしたくはないということで、毎回手動で消していましたが、今回の変更で解決。

ちなみに、 JavaScript を用いて実現していますので、 JavaScript を無効にしている、あるいは無効になる環境ではフォーカスしてもクリアされません。 ソース自体は LIPPiN のコメントフォーム周りを無断で参考にさせていただきました。 というか身近な ( と私は勝手に思っている ) サイトで実践されていたのに、それに気付いていなかったということが不覚すぎます。

input 要素でのクリアのやり方

まず、 type="text" である input 要素でのやり方。 ( ちなみに、 type 属性を指定しない場合の規定値は text であるので、お使いのフォームの input 要素内に type 属性が見当たらない場合もこれに該当します。 ) 名前やメールアドレスを入力する欄など、一行の入力欄に用いるやり方です。

<input type="text" onfocus="if (this.value == '初期入力値') this.value = '';" onblur="if (this.value == '') this.value = '初期入力値';" value="初期入力値" />

input 要素をこのように記述することで、フォーカス時にクリアされるようになります。 気を付けなければいけないのは、 初期入力値 をきちんと統一する点です。

textarea 要素でのクリアのやり方

次に、 textarea 要素でのやり方。 コメントの本文など、複数行に渡る入力欄に用いるやり方です。

<textarea rows="表示行数を示す数字" cols="表示幅を示す数字" onfocus="if (this.value == '初期入力値') this.value = '';" onblur="if (this.value == '') this.value = '初期入力値';">初期入力値</textarea>

textarea 要素をこのように記述することで、フォーカス時にクリアされるようになります。 気を付けなければいけないのは、 初期入力値 をきちんと統一する点に加え、必須属性である rows 属性と cols 属性を忘れずに指定するという点です。

謝辞

参考に……というかほとんどコピー & ペーストさせていただきました。> lego さん ( LIPPiN ) このお礼はいずれ何らかの形で。 と言ってもどういった形で行うか全く考えていませんが !

もしくはうーたん ( Bazooka ) に代わりに奉仕してもらうとか。 ( いやこの場合うーたん関係ないし ( それと起こしてくれてありがとね ! >うーたん ( 微妙に意味深 ( 実態は何てことはないことです ) ) ) )

リプライ

5 件のリプライが送られています。 この記事に対するご意見やご質問、ご感想などありましたら個別記事ページの送信フォームからお送り下さい。

2006-02-01T09:45+09:00 - うーたん

深夜までmugiの時はPCの前で寝てる可能性高し…! 僕もコメント消えるようにしよっと。

2006-02-08T00:06+09:00 - 真琴

その節はお世話になりました……って、こうしている今日も mugi なわけですが ( 謎 )

2006-04-14T22:13+09:00 - フォーカスした際にフォームの内容をクリアする JavaScript < Code-404

フォームの入力項目にフォーカスした際に、その項目がデフォルトのままなら消去し、フォーカスが外れた際に、その項目が空欄ならデフォルト値に戻す働きをする Ja...

2006-07-13T23:16+09:00 - フォーカスでフォーム内容をクリア < DesignSpeciesElement

JavaScriptで制御する方法がこちらのサイトで紹介されています。 →フォー...

2009-01-21T18:48+09:00 - フォームの初期文章を自動的にクリアするようにしてみた。 < 煤式自動連結器

当サイトをAnother HTML-lintでチェックすると、 <INPUT type="text"> や <TEXTAREA> ...

はてなブックマークの CSRF 脆弱性とその対策への流れ

記事データ

投稿者

望月真琴

投稿日時

2006-01-31T00:31+09:00

タグ
概要

はてなブックマークに CSRF 脆弱性が存在し、実際にそこを突かれた攻撃がなされた件と、 web システム側による対応を待つだけで良いのかという件について。

リプライ

リプライはまだありません。

記事本文

はてなブックマークの CSRF 脆弱性 ( 対策済 )

はてなブックマーク日記 - お気に入りに追加ボタンのCSRF脆弱性修正についてという記事を見かけていたんですが、どういった脆弱性が存在していたのかなーと思っていたら、先ほど追記したはてなのプロフィール画像によって表示は遅くなるのかという検証と、プロフィール画像を非表示にするいくつかの方法で触れた plotless: はてブのユーザアイコンでSafariが激重に!? 繋がりで [はてな] 削除されたプロフ画像 :: ぼくはまちちゃん!、そして被お気に入り数を増やす / はてなの誰が見にきたかを知る :: ぼくはまちちゃん!に辿り着きました。

これは CSRF 脆弱性を突いて、本人が意識することなくはてなブックマークのお気に入りに登録させるものでしたが、逆に Retasuの日記 - お気に入り戦争のように、そのお気に入り登録を解除する CSRF 攻撃も出現していました。 そういった流れを受けて、はてなブックマーク日記 - お気に入りに追加ボタンのCSRF脆弱性修正についてという対策に至ったようです。

CSRF って何っていう方は、 Movable Type における CSRF の可能性と各種対処法や、その他キーワード "CSRF" が設定された記事をご覧ください。 それぞれの記事の中に、外部の参考リソースへのリンクも書いてあります。 最近では、まこと先輩と星野君とCSRFの微妙な関係 - @IT という記事もあります。 関係ないけど、その記事の前回分である Webアプリ、入力チェックで万事OK? - @IT のトナカイ星野君が可愛いです。 ちなみにイラストを担当したのは交差点の真中での harupu さん。 ~JavaScriptでXMLHttpRequest~という Ajax の解説ページがためになります。

ある程度自衛できる場合と自衛できない場合

CSRF 攻撃というのは、仮に web システム側に脆弱性があっても、ユーザ側で防御策を取ることで防ぐことができる場合もあります。 例えば、 Movable Type ( 記事を投稿する時など以外はログアウトする、記事を投稿するブラウザと通常の web ブラウジング用のブラウザを使い分けるなど ) やはてなダイアリー ( 日記を書く時や他人のダイアリーにコメントを書く時以外はログアウトする、日記を書いたりコメントを書いたりするブラウザと通常の web ブラウジング用のブラウザを使い分けるなど ) がそれにあたります。

しかし、はてなブックマークのように、ログインしている状態で web ブラウジングすることを前提として作られているシステムは、こうした自衛策は使い辛いものです。 ( ブックマークレットを用いて手軽にブックマークを追加できるというのが売りのため、こまめにログアウトしたり、ブラウザを使い分けるというのは不便でなりません。 ) BloglinesFEEDBRINGER などもログインして web ブラウジングする前提になっていますので、はてなブックマークだけの話ではありませんが。

となるとシステム提供側による確実かつ素早い対応が求められるわけですが、ユーザ側も「常にログイン状態で web を歩いている」ということを気にかけておくようにしてください。 自衛し辛いと言っておいて何ですが。

リプライ

リプライはまだ送られていないか、管理者の承認待ち状態です。 この記事に対するご意見やご質問、ご感想などありましたら個別記事ページの送信フォームからお送り下さい。

補足情報

著作、講演、制作実績など