HTMLのonBlur属性とonChange属性の違いは何ですか?


117

どちらが呼び出されるのですか?onChangeが呼び出されてもonBlurが呼び出されないという状況はありますか?

回答:


171

このonBlurイベントは、必ずしも値を変更せずにオブジェクトから離れたときに発生します。

onChangeあなたは、フィールドの値を変更しているし、それがフォーカスを失ったときにイベントは、呼ばれています。

quirksmodeのイベントの紹介をご覧ください。これは、ブラウザーと対話するときにブラウザーで何が行われているのかについての情報を取得するのに最適な場所です。彼の本も良いです。


2
quirksmodeについてのあなたのリンクは、単に基本的なイベント、ブラーについて話していない
stackdave

23

onblurはフィールドがフォーカスを失ったときに発生し、onchangeはそのフィールドの値が変化したときに発生します。ただし、これらのイベントは常に同じ順序で発生するとは限りません。

Firefoxでは、変更されたフィールドからタブ移動すると、onchangeとonblurが発生します。通常、IEでも同じことが行われます。ただし、タブの代わりにEnterキーを押すと、Firefoxではonblur、onchangeの順に起動しますが、IEは通常、元の順序で起動します。ただし、IEが最初にぼかしを発射する場合もあるので、注意してください。onblurかonchangeのどちらかが他のものの前に発生するとは限りません。


10

物事を具体化する例。このように選択した場合:

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

これonblur()は、ナビゲートしたときに呼び出されます。これonchange()は、選択から別のオプションを選択したときに呼び出されます-つまり、現在選択されているものを変更します。


1
別の例:タイプの入力でnumber、上向き/下向き矢印をクリックすると、変更イベントが発生します(ただし、ぼかしイベントは発生しません)。一方、入力すると、フィールドがフォーカスを失ったときにのみ変更イベントが発生します。
Chris Middleton

7

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


4

onBlurは、問題のフィールドに焦点が当てられなくなったときです。

onblurプロパティは、現在の要素に存在するonBlurイベントハンドラコードがあればそれを返します。

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


4

ここで、onBlur()は関係なく発生することに注意してください。

これは便利なスレッドですが、明確にしていないのは、onBlur()が毎回実行されるということだけです。

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


3

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

onBlurは、フィールドからフォーカスを外すときです。たとえば、テキスト入力を書き込んでいて、それをクリックしたときです。

したがって、実際にはそれらはほとんど同じですが、onChangeがonBlurがその入力を変更する必要がある場合に何かを行う方法で動作するようにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.