HTML入力で値が変更されたときにリスナーイベントを追加することの簡単な分析

HTML入力で値が変更されたときにリスナーイベントを追加することの簡単な分析

達成される効果
多くの場合、入力ボックスの値の変化をリアルタイムで監視し、ブラウザを誘導してウェブサイトのユーザーエクスペリエンスを向上させるための即時のアクションを実行できるようにします。例えば、入力ボックスに入力されたバイト数を瞬時に表示したり、入力値を瞬時に読み取って検索を誘導したり、これが Google の関連検索効果です。
瞬間を捉えることができれば、多くのことができるようになります。
知っておくべきこと
まず、 onchangeonpropertychangeの違いを理解する必要があります

IE では、HTML 要素のプロパティが変更されると、onpropertychange を通じて即座にキャプチャできます。
onchange 属性値が変更された場合、イベントをアクティブ化するには、現在の要素もフォーカスを失う必要があります (onblur)。

これを理解した後、onpropertychange の効果が目的のものであることがわかりますが、残念ながら、これは IE でのみ機能します。 onpropertychange を置き換える別の機会を見つけることはできますか?

情報を読んだ後、 oninputイベントを使用して他のブラウザでも同じ効果を実現できることを知りました。素晴らしいですね。IE ブラウザを区別するだけです。

oninputの使用

次に、oninputの使い方を見てみましょう。
登録時間をページ上に直接記入する場合は、次のようにします。
<、input type="text" name="textfield" oninput="alert(this.value);" onpropertychange="alert(this.value)" />

ただし、oninput を JS コードから分離した場合は、通常のイベント登録方法とは若干異なり、addEventListener を使用して登録する必要があります。

attachmentEventとaddEventListenerの違い

ここで、attachEvent と addEventListener の使い方を見てみましょう。

attachEvent メソッドは、イベントに他の処理イベントを添付します。 (Mozillaシリーズではサポートされていません)
Mozilla シリーズの addEventListener メソッド

例:

XML/HTML コードコンテンツをクリップボードにコピー
  1. document.getElementByIdx_x_x("btn") .onclick = method1 ;
  2.   
  3. document.getElementByIdx_x_x("btn") .onclick = method2 ;
  4.   
  5. document.getElementByIdx_x_x("btn") .onclick = method3 ;

このように記述するとmedhot3のみが実行されます

次のように書きます:

XML/HTML コードコンテンツをクリップボードにコピー
  1. var btn1Obj =ドキュメント.getElementByIdx_x_x("btn1");
  2.   
  3. btn1Obj.attachEvent("onclick",メソッド1);
  4.   
  5. btn1Obj.attachEvent("onclick",メソッド2);
  6.   
  7. btn1Obj.attachEvent("onclick",メソッド3);

実行順序はmethod3->method2->method1です

Mozillaシリーズの場合、このメソッドはサポートされていないため、addEventListenerが必要です。

XML/HTML コードコンテンツをクリップボードにコピー
  1. var btn1Obj =ドキュメント.getElementByIdx_x_x("btn1");
  2.   
  3. btn1Obj.addEventListener("クリック",method1,false);
  4.   
  5. btn1Obj.addEventListener("クリック",method2,false);
  6.   
  7. btn1Obj.addEventListener("クリック",method3,false);
  8.   
  9. 実行順序はmethod1- > method2- > method3です

addEventListener を使用して oninput イベントを登録する方法がわかったので、解決する必要がある問題 [ブラウザの分割] に戻りましょう。

IEブラウザを決定する

IEを区別するには?
これはよくある問題のようです。インターネット上でこの問題を見つける方法は数多くありますが、次の 2 つのカテゴリに分類できます。
1 つ目は、ブラウザの機能属性を決定することです。
2 番目は、従来のユーザー エージェント文字列を判別することです。これは、おそらく最も古く、最も人気のある検出方法です。
ここでは詳細には触れません。より簡単な方法で判断します。

XML/HTML コードコンテンツをクリップボードにコピー
  1. if("\v"=="v") {
  2.   
  3. 警告("IE");
  4.   
  5. }それ以外{
  6.   
  7. 警告("いいえ");
  8.   
  9. }
  10.   

これまで遭遇した問題は解決しました。アイデアが実装可能かどうかをテストするためにコードを書き始めましょう。

リスニング イベントを追加するための HTML 入力と値の変更に関する上記の簡単な分析は、エディターが皆さんと共有するすべての内容です。参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。

元の URL: http://www.web600.net/html/editor/JavaScript/201001131529.html

<<:  Typora コードブロックのカラーマッチングとタイトルシリアル番号実装コード

>>:  Linux で Ceph 分散ソフトウェアをインストールして使用する方法に関するチュートリアル

推薦する

MySQL データベースの大文字と小文字の区別の問題

MySQL では、データベースはデータ ディレクトリ内のディレクトリに対応します。データベース内の各...

jsはシンプルな計算機を実装します

参考までに、ネイティブjsを使用して簡単な計算機(詳細なコメント付き)を実装します。具体的な内容は次...

Vueはシンプルな虫眼鏡効果を実装します

この記事では、参考までに、簡単な虫眼鏡効果を実現するためのVueの具体的なコードを紹介します。具体的...

openlayers6のマップオーバーレイの詳細な説明

1. オーバーレイの概要オーバーレイとは、その名の通り、別の形で地図上に表示される、覆うことを指しま...

Nginx のインストールと設定ルールの詳細な紹介

目次1. nginxのインストールと操作(Mac OS環境) 2. nginxルールの設定3. コマ...

シンプルなショッピングカートの最も完全なコード分析を実装する JavaScript (ES6 オブジェクト指向)

この記事では、シンプルなショッピングカートを実装するためのJavaScriptの具体的なコードを参考...

MySQL データ型の選択原則

目次小さいけれど美しいシンプルにNULL値を避けるデータタイプを選択する手順データ型の紹介1. 文字...

XHTML 3つの文書型宣言

XHTML は 3 つのドキュメント タイプ宣言を定義します。最もよく使用されるのは XHTML T...

Dockerコンテナオーケストレーション実装プロセス分析

実際の開発環境や本番環境では、コンテナを独立して実行することはあまりなく、複数のコンテナを一緒に実行...

Centos7 FFmpeg オーディオ/ビデオ ツールのインストールに関する簡単なドキュメント

ffmpeg は非常に強力なオーディオおよびビデオ処理ツールです。公式 Web サイトは http:...

React 関数コンポーネントのパフォーマンス最適化のアイデアの詳細な説明

最適化のアイデア最適化には主に 2 つの方向があります。再レンダリングの回数を減らします。 Reac...

Vueモバイル端末は左スライド編集と削除の全プロセスを実現します

序文プロジェクトのニーズに応じて、Vue-touch を使用して、vue モバイル端末の左スワイプ編...

Vueのフロントエンドとバックエンドのポートの不一致の問題を解決する

Vue のフロントエンドとバックエンドのポートが一致していませんconfig index.jsファイ...

Dockerイメージの作成、保存、読み込み方法

イメージを作成する方法は 3 つあります。既存のイメージに基づいてコンテナを作成する、ローカル テン...

Navicat For MySQL の使い方に関する簡単なチュートリアル

推薦する: Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル...