投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/5/18 21:04:09
追加で、URL 未入力時の出力結果にも手を加えていただければと。
「<a href=""></a>」が出力されている状況は、HTML 的には好ましくありませんので。


> 何か思うところがある方は書き込んでください。
自然言語で曖昧検索する機能を実装するとか。
http://www.gizcollabo.jp/search/search.php


> URLは長いことが多いので、長めの文字列も入力できることを視覚的にアピールする目的でtextareaにしました。
分からないわけでは無いのですが、かえって混乱の元であるような気もしました。
実際私は、2 つの URL を入力してしまったわけですし。

そもそも textarea 要素は、W3C の仕様としては
「The TEXTAREA element creates a multi-line text input control.」
とされており、複数行入力を目的としたコントロールである事が伺えます。
その点から言えば、改行入力が許可されない箇所での利用には向いていないと思います。

# なお、textarea に複数の URL を入力させてみた感想としては、改行と折り返しの区別が
# つかないという問題がありました。折り返しを禁止して、水平スクロールバー表示なら
# 区別できますが、そうした textarea 表示はブラウザ依存になってしまうのが悩みどころ…。


> 掲示板などに不慣れな方向きの配慮のつもりです。
長い URL が入りきらない(ように見える)という状況は、IE のアドレスバーなどで、
多くのユーザーが経験済みでしょうから、掲示板に不慣れな利用者であったとしても、
<input type="text"> へ入力するということに対して、特に混乱は無い気がしています。
ただ、その場合にはレイアウトを変更し、横に長いテキストボックスにした方が良いでしょうけれども。

その意味では、今のレイアウトだと幅が狭いので「視覚的にアピール」するために必要な処置として
textarea を選択したという流れ自体は理解できます。もしも今のレイアウトのまま、<input> で
対応するとしたら、スタイルシートで水平スクロールバーを表示させておくぐらいしか無さそうですしね。


>>> また、URLは1つしか入力できない旨を明記するようにします。
了解です。その場合には、改行が入力されていた場合の対応もお願いします。


>> また、特殊文字(改行など)が入ったときに、それがエスケープされていないようにも見えます。
> エスケープはしてるつもりでしたが…。確認してみます。
HTML としてのエスケープは、恐らく問題無いであろうと予想しています。(まだ確認していませんが)

ここで意図していたのは、URL エンコードの方です。2 つの URL を入力したときに、
<a href="http://www.ecma-international.org/publications/standards/Ecma-335.htm
http://msdn.microsoft.com/ja-jp/library/3f4t3ddz.aspx">http://www.ecma-international.org/publications/standards/Ecma-335.htm
http://msdn.microsoft.com/ja-jp/library/3f4t3ddz.aspx</a>
のように出力されていたので、気になっていました。

改行も含めてひとつの URL として看做しているのだとしても、それなら、空白文字を
そのまま出力してしまってはマズイのでは無いかな…と思った次第です。
(URL 中に、改行やスペースやタブなどの空白文字は含められず、%20 や %0d などへの変換が必要)

と言っても、そもそも変換が必要となるような URL 指定こそが NG なのであって、
これはどちらかといえば、データ補正(末尾空白を String.Trim で除去するなど)や
入力チェック(再入力を促す)などで対応すべき範囲なのかも知れません。