HTMLコードを挿入するために、テキストエリアの上にいくつかのボタンを作成しようとしています-非常に貧弱なHTMLエディターです。いくつかの INPUT 要素があり、jQuery を使用して、jQuery のappend()
orhtml()
またはtext()
関数を呼び出すクリック ハンドラーを設定しています。
ハンドラーが起動し、debug alert() が表示されますが、追加しようとしているテキストがテキストエリアに表示されません。Firebug で textarea を調べると、追加しようとしているテキストが textarea の子として表示されますが、要素のスタイルが display:none に設定されている場合と同様に淡色表示されます。しかし、Firebug の CSS インスペクターは、表示または可視性のプロパティに変更を表示しません。
クリック ハンドラーを 'append()' に設定してから複数回クリックすると、Firebug でテキストが何度も追加されますが、新しいチャンクはそれぞれまだ見えません。Firebug で [HTML の編集] を選択し、追加されたテキストの横にいくつかの文字を入力すると、テキスト ブロック全体 (jQuery によって追加されたテキストと Firebug で追加したもの) が突然表示されます。
これは、クリック ハンドラーを使用せずに、次のようなインライン ハンドラーを使用して追加関数を呼び出した場合にも発生します。onclick="javascript:insert('bold');"
追加されたテキストが表示されない理由を知っている人はいますか?
関連するコードは次のとおりです。
HTML:
<input type='button' id='bold' value='B' onclick='javascript:insert("bold")' />
<textarea name='PersonalGreeting' id='PersonalGreeting'>default text</textarea>
Javascript:
function insert( cmd ) {
switch ( cmd ) {
case 'bold':
$('#PersonalGreeting').append('<b>bold text here</b>');
break;
}
}