3

デフォルトのテキストを入れるテキストエリアがあります。デフォルトのテキストエリアのテキストが「ここにテキストを挿入」だとしましょう。

JavaScript の onClick および onBlur 関数を使用して、ユーザーが「ここにテキストを挿入」でテキスト領域をクリックしたときに、そのようにします。メッセージが表示された場合、メッセージは消えて空白に置き換えられます。テキストエリアが空白で、ユーザーがそれをクリックすると、テキストエリアに「ここにテキストを挿入」と表示されます。メッセージ。このプロセスのコードは次のとおりです。

<textarea onclick="if(this.value=='Insert Text Here.'){this.value=''}" onblur="if(this.value==''){this.value='Insert Text Here.'}">Insert Text Here.</textarea>

このコードは問題なく動作しています。この問題は、「ここにテキストを挿入」するときに発生します。複数行で構成されるものに置き換えられます。例えば:

<? $textarea = "Line 1\n\nLine 2"; ?>
<textarea onclick="if(this.value=='<? echo $textarea ?>'){this.value=''}" onblur="if(this.value==''){this.value=<? echo $textarea ?>'}"><? echo $textarea ?></textarea>

この場合、2 つの textarea タグ間の $textarea 値と、onClick および onBlur メソッドで使用されている $textarea 値との間に不等があるため、onClick および onBlur コマンドは壊れています。2 つのタグ間の $textarea の値は次のとおりです。

Line 1

Line 2

onBlur および onClick メソッドの $textarea の値は次のとおりです。

Line 1\n\nLine 2

どうやら、この2つは不平等です。

問題が何であるかはわかっていますが、それを修正する方法がわかりません。\n を他の代替手段に置き換えてみましたが、問題は \n がタグ間で処理され、onBlur および onClick メソッドで改行として登録されていないという事実に要約されます。

この問題を解決するためのアイデアはありますか?

ありがとう!

4

1 に答える 1

1

テキストエリアのタイトルに同じデフォルト値を与える

  <?php $textarea = "Line 1\n\nLine 2"; ?>
  <textarea onclick="if(this.value==this.title){this.value=''}" onblur="if(this.value==''){this.value=this.title}" title="<?php echo $textarea ?>"><?php echo $textarea ?></textarea>

この方法には多くの利点があります。

テキストエリアにマウスオーバーするたびに INSERT TEXT HERE が表示されます。これは Facebook でも使用されます。

于 2012-07-23T17:03:02.033 に答える