5

私は現在使用しています..

onfocus="this.value=''; return false;"

コメントを残すためにテキストエリア内の値をクリアします。ただし、クリックしてコメントを入力し、いくつかのことを入力するときに、ボックスの外側をクリックしてページ上の何かを読み、テキストエリア ボックス内をもう一度クリックしてコメントに戻ると、現在の入力がクリアされます。 .

デフォルト値をクリアするためだけに最初のクリックでテキストエリアをクリアし、残りのブラウザページのセッションの残りのクリックをクリアする方法はありますか?

4

9 に答える 9

8

ラベルタグに指示を入れ、テキストエリアの上に配置してから、非表示にするか、テキストエリアがフォーカスされている場合は表示することをお勧めします。これは、texteareaに指示が入力され、フォーム内にある場合に送信される可能性があるためです。

しかし、あなたの問題を解決してください、あなたがしなければならないのは:

onfocus="if(this.value== "your initial text"){this.value=''}; return false;"
于 2011-02-17T18:39:17.270 に答える
3

ロジックをコンテンツから切り離すのは良い習慣だと思います。したがって、jQuery を使用すると (私たちは皆 jQuery を使用しますよね?)、次のことができます。

$(document).ready(function() {
    var _bCleared = false;
    $('form textarea').each(function()
    {
        var _oSelf = $(this);

        _oSelf.data('bCleared', false);
        _oSelf.click(function()
        {
            if (!_oSelf.data('bCleared'))
            {
                _oSelf.val('');
                _oSelf.data('bCleared', true);
            }
        });
    });
});

これにより、サイト上のすべてのテキストエリアが反復処理され、クリア状態に関するブール値が個別のデータ バインディングに格納されます。onclick イベントもテキストエリアごとに個別に処理されるため、1 つのページで複数のテキストエリア / テキストエリアのクリアリングを行うことができ、HTML を Javascript で飛び散らせる必要はありません。

于 2012-10-09T14:29:39.923 に答える
1

これは役立ちます

function clearTA {
   if(this.value != "type here") {
      this.value = ''; 
      return false;
   }
}

およびonfocushtml属性

...onfocus="clearTA()"..
于 2011-02-17T18:39:20.890 に答える
1

私はこれが遅いことを知っていますが、この問題を抱えている他の人にとって、最も簡単な答えは

onfocus="this.value=''; this.onfocus='';"

変数を保存/チェックすることなく、必要なことを正確に実行する必要があります。

于 2012-07-23T19:02:48.307 に答える
0

clearedOncefalseであるJavaScriptの変数を宣言します。オンフォーカスで、この変数を確認します。falseの場合は、trueに設定して、テキストエリアをクリアします。それ以降のクリックはすべて何もしません。コード:

onfocus='if (!clearedOnce) { this.value = ''; clearedOnce = true;} return false;'
于 2011-02-17T18:38:43.360 に答える
0

グローバルページ変数を使用できます。

要素の上のscript要素で

var tracker = {};

後で...

<textarea name="a" onfocus="if(!tracker[this.name]) { tracker[this.name]=true; this.value=''; } return false;">Placeholder text</textarea>
于 2011-02-17T18:38:46.897 に答える