ENTEREAL

テキストエリアを操作する際のポイント

WEBページ上のデータを設定する時

例1 inputタグ内の文字を更新する場合

<input type="text" class="form-control" id="ex1" value="更新前の文字列">
		↓
<input type="text" class="form-control" id="ex1" value="更新後の文字列">

$('#ex1').val('変更後の文字列');

例2 h3タグ内の文字を更新する場合

<h3 id="ex2">更新前の文字列</h3>  →  <h3 id="ex2">更新後の文字列</h3>

$('#ex2').html('変更後の文字列');

例3 textareaタグ内の文字を更新する場合

<textarea id="ex3">変更前の文字列</textarea>  →  <textarea id="ex3">変更後の文字列</textarea>

$('#ex3').html('変更後の文字列');

こんな感じで、開始/終了タグの間の文字を更新する際は、$(対象エレメント).html(設定したい文字);

value=""の値を更新する際は、$(対象エレメント).val(設定したい文字);と覚えている方も多いと思います。


最新のブラウザを使っていれば、普段はこれでまったく問題ありません。


ある特定の場合に不具合

ブラウザの「戻るボタン」や、「Javascript:history.back();」でひとつ先のページから元ページに戻った時、ようは、キャッシュ内のページを表示した際、上記の例3のバターンの場合のみ意図した動作になりません。

詳しく書くと、FirebugなどのデバッガーやJavascriptで値を確認すると、意図通りに値が更新されているのですが、画面上の表示が更新されない問題がでます。

正常ルートでは発生しない問題のため、テスト段階で確認が漏れてしまう可能性が大いにあります。


対処方法

<textarea></textarea>でも、<input type="text" class="form-control" value="" />と同じように、エレメント.val('');を使って更新します。

Javascriptの場合はエレメント.innerHTML = '';ではなくエレメント.value = '';を使います。

<textarea id="ex3">変更前の文字列</textarea>  →  <textarea id="ex3">変更後の文字列</textarea>

$('#ex3').val('変更後の文字列');

Same Category

jQuery Table Sorterのリリース

jQuery スムーススクロールに関する件