2

私は JavaScript がまったく初めてで、フォームのテキストエリア (外部スクリプトによって生成されたもの) を次のように変更したいと考えています。

1.) 開始時のテキストエリア: 「ここにあなたのメッセージ」というラベルが付けられ、色は「rgb(136, 136, 136)」です。

2.) フォーカスのあるテキストエリア: ラベルが削除され、色が「rgb(0, 0, 0)」に設定されます

3.) ぼかしのテキスト領域: ユーザー入力の色を「rgb(136, 136, 136)」に設定; 入力がない場合、ラベルは「rgb(136, 136, 136)」の色で再表示されます

私はいろいろと実験しました

var foo = document.getElementById('HCB_textarea');
foo.innerHTML = 'Your message here';
foo.style.color = 'rgb(136, 136, 136)';
foo.onfocus = do something;
foo.onblur = do something;

しかし、うまくいきませんでした。ティア

4

2 に答える 2

1

「ラベル」によってラベルHTML要素を意味するのではなく、例が示唆しているようにテキストレア内のデフォルトのテキストを意味すると仮定して、これを試してください:

var foo = document.getElementById('HCB_textarea');
var defaultText = 'Your message here';
foo.value = defaultText;
foo.style.color = '#888';
foo.onfocus = function(){
    foo.style.color = '#000';
    if ( foo.value == defaultText ) {
        foo.value = '';
    }
};
foo.onblur = function(){
    foo.style.color = '#888';
    if ( foo.value == '' ) {
        foo.value = defaultText;
    }

};
于 2010-04-13T14:42:02.977 に答える
1

それは私にかなり近いようです。テキストエリア全体に色を付けるか、まったく色を付けないかのどちらかにする必要があります。クレイジーなハックがなければ、特定の文字に色を付けることはできません。

var foo = document.getElementById('HCB_textarea');
var labelVal = 'Your message here'
foo.value = origVal;
foo.style.color = 'rgb(136, 136, 136)';
foo.onfocus = function() {
  if( foo.value == labelVal ) foo.value = "";
  foo.style.color = 'rgb(136, 136, 136)';
}
foo.onblur = function() {
  if( foo.value != "" ) {
    foo.style.color = 'rgb(0, 0, 0)';
  } else {
    foo.value = labelVal;
    foo.style.color = 'rgb(136, 136, 136)';
  }
}
// You should modify this to use your actual form name.
document.forms[0].onsubmit = function() {
  if( foo.value == labelVal ) foo.value = "";
}

編集- マリオが、ラベルを要素ではなくテキストエリア内に配置したいということを指摘したため、コードを変更しました<label>

于 2010-04-13T14:43:12.087 に答える