onfocusとonblur (イベントハンドラ)

 onfocusとonblurは殆どセットで使われることが多いです。このイベントハンドラはオブジェクトにフォーカスされた時(onfocus)とフォーカスが外れた時(onblur)というタイミングで実行されます。実行されるオブジェクトはinput内のtypeがselect、textの場合とtextareaのみで操作が可能です。link(<a></a>)にフォーカスをすることなどはできません。
 フォーカスというのはそのオブジェクトにカーソルが当てられて入力待ちという状態の時を指します。
<form name="result">
<p>収入&nbsp;<input type="text" value="0" class="right" name="income">円</p>
<p>支出&nbsp;<input type="text" value="0" class="right" name="outgo">円</p>
<p>残高&nbsp;<input type="text" value="0" class="right" name="rest" onfocus="document.result.rest.value=document.result.income.value-document.result.outgo.value" onblur="document.result.rest.value='もう一度計算できます。'">円</p>
</form>
 上記の例では収入と支出に値が入力され、残高にカーソルが当てられた状態になると結果を表示します。そして、残高のフィールドからカーソルが外れると「もう一度計算できます。」というメッセージが表示されます。
 ハンドラ自体が作用するオブジェクトが決まっているというのは覚えるのが面倒ですね。以下のような感じになります。

収入 

支出 

残高 



解説

 各オブジェクトにはname=""でもってそれぞれ名前を割り振ります。そうじゃないとどのオブジェクトに対して何を行うのかわからなくなるからです。<input type="text" ...>にはvalueを指定することができるので結果表示の残高のフィールド部分ではそのvalueの値を操作しています。
  • document.result.rest.value(残高のフィールド)の値は、
  • document.result.income.value(収入)から
  • document.result.outgo.value(支出)を引いた値ということになります。
documentオブジェクトは<html></html>内の表示領域をすべて指していて、その中のresult、つまり<form name="result" ...></form>を指していて、さらにincomeはそのform中の<input name="income" ... />を指しています。これらのvalueを引き算で計算しているというだけです。
 どのオブジェクトに有効か?というのと、そのオブジェクトの指定を間違わなければ簡単に機能します。






プロフィール



  • Name :: 山上オサム ♂(37)
  • Hobby :: 武術
  • Work :: Web Designer