これは確かに良い点です。
しかし、最初に:これを回避する方法
値を保存するフォーカス ハンドラー onfocus を設定します。ブラー ハンドラー onblur を設定し、現在の値と保存された値を比較します。値が変更された場合は、「committedchange」イベントをトリガー/ディスパッチ/起動します。-> バストされた変更イベントの代わりに commitedchange イベントを使用してください :-)
ここにいくつかの考えがあります。ただし、最初にchange イベントの HTML5 仕様を読んでください。
今いくつかの歴史
HTML4 仕様には異なる定義がありました (値/checkednes が変更され、要素がアクティブ化またはフォーカスされていない場合にイベントが発生します)。これは、特にチェックボックスとラジオボタンにとって悪いことでした (これが、人々がクリックを使用し、これらの要素 (または jQuery) の変更イベント)。
新しい HTML5 仕様
新しい仕様は最初の定義を結合し、「明示的なコミット アクション」と呼ばれるいくつかの追加機能を追加します。実際には、これが何を意味するのかよくわかりませんが、ユーザーがスピンボタン (type=number) でマウスを押している間、このユーザーはコミットアクションを行っておらず、フォームと対話していて、まだ入力/変更を行う場合があります。
さらに、HTML5 は入力イベントを追加し、最終的ではない変更について「より早く」開発者に通知します。たとえば、これを datalist 要素と組み合わせて動的な変更を可能にするには、つまり autosuggest を作成します。
現実: ブラウザ
スピンボタンを使用した入力タイプの場合 (タイプ番号、時間など)。Opera と Chrome は非常によく似た動作をし (スピンボタンと対話すると入力と変更がトリガーされます)、Safari は onblur の変更をトリガーします。type=range の場合、すべてのブラウザーがこれを同等に処理します。マウスをドラッグしている間、常に change イベントと input イベントがトリガーされます。仕様とユースケースが異なる 2 つの異なるイベントがありますが、実際には同じことを行っています (はい)。
現実: 開発者
ユースケースで type=range の change イベントを使用するチュートリアルやスクリプトはたくさんありますが、代わりに input イベントを使用する必要がありますが、ご存知のように、開発者は愚かで、仕様の 1% しか読んでいません。
話の終わり
古い定義は悪く、役に立たなかった。新しい仕様は改善されましたが、理解できませんでした。誤用され、実装が不十分でした...そして今??? 古い悪い HTML5 チュートリアル/スクリプト コードを壊したいと思う人はいないと思います。
これを変えたいなら、私のヒーローになってください。