2009-04-24 56 views

答えて

137

onBlurイベントは、値を変更しなくてもオブジェクトから離れたときに発生します。

フィールドの値を変更してフォーカスを失った場合にのみ、イベントが呼び出されます。

quirksmode's intro to eventsをご覧ください。これは、あなたがブラウザとやりとりしているときにあなたのブラウザで起こっていることに関する情報を得るのに最適な場所です。彼の本も良いです。

+1

quirksmodeに関するあなたのリンクは、ぼかし、ちょうど基本的な出来事について話しません。 – stackdave

3

onChangeは、フィールド内の何かが変更されたときなどです。たとえば、テキスト入力に何かを書くときです。

onBlurは、フィールドから離れたところにいるときなど、テキスト入力で書いていて、クリックしたときなどです。

実際にはほとんど同じですが、onChangeの動作はonBlurの動作を変更する必要があります。

4

onBlurは、問題のフィールドにフォーカスがなくなったときです。

onblurプロパティは、現在の要素に存在するonBlurイベントハンドラコード(存在する場合)を返します。

onChangeは、フィールドの値が変更されたときです。

9

物を具体的にする例。あなたは離れて移動すると

<select onchange="" onblur=""> 
    <option>.... 
</select> 

onblur()が呼び出されます:あなたは、このような選択をしている場合。 onchange()は、選択肢から別のオプションを選択するとき、つまり現在選択されているものを変更するときに呼び出されます。

+1

もう1つの例:「数字」タイプの入力では、上/下矢印をクリックすると変更イベントが発生しますフィールドがフォーカスを失ったときにのみ変更イベントが発生します。 –

17

onblurはフィールドのフォーカスが失われたときに起動し、onchangeはフィールドの値が変更されたときに起動します。これらのイベントは必ずしも同じ順序で発生するとは限りません。

Firefoxでは、変更されたフィールドからタブを外すとonchangeとonblurが発生し、通常はIEで同じ動作をします。しかし、タブの代わりにEnterキーを押すと、Firefoxではonblurをオンにし、IEは通常元の順序で起動します。しかし、私はIEがぼやけを起こすことがあるので、注意が必要です。あなたはonblurかonchangeのどちらかが他のものの前に起こると仮定することはできません。

7

Firefoxでは、onchangeはタブをクリックしたとき、または入力フィールドの外側をクリックしたときにのみ発生します。 Onblurについても同様です。違いは、あなたがフィールドで何かを変更したかどうかにかかわらず、onblurは発火することです。 ENTERがこれらのいずれかまたは両方を起動する可能性はありますが、予期しない送信を防ぐためにフォームのENTERを無効にすると、そのことを知ることはできません。

3

ここで、onBlur()が関係なく起動することに注意することが重要だと思います。

これは参考になるスレッドですが、明らかにしていないのは、onBlur()が毎回起動するということだけです。

onChange()は、値が変更されたときにのみ起動します。

関連する問題