<input type =“ number” />は、値が変更されたときにどのイベントを発生させますか?


93

<input type="number" />上/下矢印がクリックされたときにHTML5 要素が起動するイベントを誰かが知っているかどうか疑問に思っています:

数値入力例

onblurフォーカスが入力フィールドを離れたとき、私はすでにfor を使用しています。


これは、クロームのバグのようですstackoverflow.com/questions/44978087/...
オリオール・ヒメネス

回答:


73

change フィールドの値が変更されたときに発生するイベントです。

HTML5イベントinputも発生すると思います。


36
oninput「上」と「下」の矢印がクリックされたときにのみ発生します。
N 1.1

2
しかしonchangeは少なくともFirefoxのぼかしでのみ発火します。キープレスを探す必要があると思います。
andho

onchangeとoninputの両方がOperaで機能しましたが、oninputのみがChromeで機能しました(そして、イベントハンドラーからfalseが返された場合のみ-それ以外の場合、Chromeはoninputイベントを繰り返し発生させます)
Ian Oxley

2
change値が入力されたときは起動せず、ボタンがクリックされたときのみ起動します(少なくともFirefoxでは)。
Timmmm 2015

5
inputの融合のようなものですkeyup change
Thanh Trung 2017年

37

jQueryの場合、次のコードがキーボード入力、マウスホイールの変更、Chromeのボタンクリックをカバーし、Firefoxのキーボード入力も処理することがわかりました

$("input[type=number]").bind('keyup input', function(){
    // handle event
});

2
それにも「変更」を加えると完璧です。それに対する外部の変更もリッスンする必要がありますが、いずれにしてもそれを追加しても害はありません。
Matt Fletcher

また、入力フィールド内のスクロールイベントを取得する場合は、「マウスホイール」も使用します。
Matt Fletcher

4
.bind()今の賛成で廃止されました.on()
マイケル・ヘイズ

7

私はそれを見つけてChrome 19ですべてonkeyuponchangeカバーしました。これは直接の値入力、上矢印キーの押下、ボタンのクリック、マウスホイールのスクロールを処理します。

onchangeChromeではそれだけで十分ですが、フィールドをテキストボックスとしてのみレンダリングする他のブラウザにはonkeyupバインディングが必要です。バインディングは新しい値を読み取るために完全に機能します。

mousewheelイベントを個別にバインドすることはあまり成功しませんでした。イベントは、フィールド値が更新される前に早すぎるタイミングで発生したため、常にフィールドの以前の値を示しました


これはFirefoxにも当てはまります。
バルフイン

5

onchangeイベントは、ぼかしの上に発射したがoninput、あなたが入力すると、イベントが発生します。oninputイベントにタイマーを設定しonchange、ユーザーが1秒間入力を停止したときにイベントを発生させたいと思うかもしれませんか?


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