1. ホーム
  2. javascript

[解決済み] JQueryを使って<input type="text">の変更をすべて(即座に)検出する。

2022-03-23 10:52:13

質問

の値には、さまざまな方法があります。 <input type="text"> などが変化することがあります。

  • キープレス
  • コピー&ペースト
  • JavaScriptで修正
  • ブラウザまたはツールバーによる自動補完

入力値が変化するたびに、JavaScriptの関数が(現在の入力値で)呼び出されるようにしたいのです。 そして、入力がフォーカスを失ったときだけでなく、すぐに呼び出されるようにしたいのです。

私は、すべてのブラウザでこれを行うための最もクリーンで堅牢な方法を探しています(できればjQueryを使用)。

どのように解決するのですか?

残念ながら、私は setInterval が受賞しました。

<input type=text id=input_id />
<script>
setInterval(function() { ObserveInputValue($('#input_id').val()); }, 100);
</script>

これは、たった1行のコードで、最もクリーンなソリューションです。 また、最も堅牢なソリューションでもあります。 input は値を取得することができます。

setInterval」を使うことのデメリットは、この場合当てはまらないようです。

  • 100msのレイテンシー? 多くのアプリケーションでは、100msもあれば十分な速度です。
  • ブラウザの負荷が増える? 一般的に、ページ上にたくさんの重たい setIntervals を追加することはよくありません。 しかし、この特別なケースでは、追加されたページの負荷は検出されません。
  • 多くの入力に対してスケールしない? ほとんどのページでは、同じsetIntervalですべてを嗅ぎ分けることができる入力は、ほんの一握りしかありません。