テキストエリアのAYCの件

mt.VIcunaテンプレートで、textareaの初期値にAdd Your Commentを書いてフォーカス時に初期値がクリアされるという動作についてです。

ネタ元は、mt.Vicuna フォーラムのトピック、「コメントプレビュー表示時の Add Your Comment 表示について」です。

コメントを入力して -> プレビュー すると、プレビュー画面下のコメント欄には、自分で入力したコメントではなく Add Your Comment が表示されてしまい、そのままPOSTすると Add Your Comment がコメント投稿されてしまいます。

動作としては、textarea要素の初期値は、「Add Your Comment」として、フォーカスされたとき(onfocus)に初期値が消えるというものです。キーワード検索のテンプレートにおける動作と同じようなもので、基本は以下のような形となります。

*見やすくするために適当な箇所で改行してます

<textarea id="comment-text" class="inputField" name="text" rows="8" cols="50"
 onfocus="if (this.value == 'Add Your Comment') this.value = '';"
 onblur="if (this.value == '')
 this.value = 'Add Your Comment';">
Add Your Comment
</textarea>

で、自分のところでは、上のような処理をいれているのですが、コメントフォームのテンプレートモジュールがシステムテンプレートの場合も兼ねているために、システムテンプレートであったときの処理も併記する必要があるために、以下のような形で使っています。

*実際は改行せずに一行です。

<textarea id="comment-text" class="inputField" name="text" rows="8" cols="50"
<MTIf name="tempName" like="individual"> onfocus="if (this.value == 'Add Your Comment') this.value = '';" onblur="if (this.value == '') this.value = 'Add Your Comment';"</MTIf>>
<MTIf name="tempName" eq="system_comment_preview">
<$MTCommentBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$>
<MTElseIf like="individual">Add Your Comment</MTIf>
</textarea>

MTIf name="tempName" eq="system_comment_preview以降の処理がコメントプレビューだったときに、テキストエリアに書き込まれた内容を表示させるためのものです。

MTCommentBodyタグで、コメントの内容をテキストエリアに表示させます。この処理にもちょっと不満なところもあって、コメントに何もかかれない状態でプレビューしますと、Add Your Commentになっちゃいます。ま、あまりありえないんですけど。

<MTElseIf like="individual">Add Your Commentと書いた部分についてですが、「コメントプレビューテンプレート」以外のときに初期値を書くためのものです。もともとは、MTElseIfのところは、MTElseだけで書いていたような気がしたのですが、多分MTElseだけで処理してよさそう(のはず)。