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 への接続時に発生する 1449 および 1045 例外の解決方法

MySQL への接続時に発生する 1449 および 1045 例外の解決方法 mysql 1449:...

js 配列から重複を削除する 11 の方法

実際の業務や面接では、「配列の重複排除」の問題によく遭遇します。以下は、js を使用して実装された配...

Vueはルールを使用してフォームフィールドの検証を実装します

Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使...

IDEA の Maven プロジェクトで MySQL 8.0 に接続して使用する方法に関するチュートリアル

まず、私の基本的な開発環境を見てみましょう。オペレーティングシステム: MacOS 10.13.5 ...

JavaScript で文字列内の最長の単語を見つける 3 つの方法 (推奨)

この記事は、Free Code Camp の基本アルゴリズム スクリプト「文字列内の最長の単語を見つ...

CSS オーバーフローラップの新しいプロパティ値をどこでも使用

1.まず、overflow-wrap属性を理解する CSS のoverflow-wrapプロパティは...

MySQL LOAD_FILE() 関数メソッドの概要

MySQL では、LOAD_FILE() 関数はファイルを読み取り、その内容を文字列として返します。...

メモリの原則に関する詳細な説明: JS では変数はヒープに保存されるのか、スタックに保存されるのか?

目次1. 冷蔵庫に入りきらない象2. シャドウクローン文字列3. 実際に見た「奇妙なボール」 4. ...

meta name="" content="の機能の詳細な説明

1. 文法: <meta name="名前" content="...

HTML スペースコードの簡単な分析

HTML についてどれくらい知っていますか? 現在、基本的な HTML コードを学習している場合は、...

WEB2.0の片手ルール

<br />前回のCSSに関する記事は、多くの人にあまり理解されませんでした。そのため、...

Centos7 システムに k8s クラスターを展開するための詳細な紹介

目次1 バージョンと計画1.1 バージョン情報: 1.2 クラスター計画2. 展開1. ファイアウォ...

React でのポータルとエラー境界処理の実装

目次ポータルエラー境界処理エラー境界を使用しない場合はどうなりますか?注記ポータルスロットとも言えま...

VirtualBox6上のCentOS7で静的IPを設定する方法と注意点

VirtualBox をインストールした後、CentOS 7 をインストールします。ここでは詳細には...