js は、Element の入力コンポーネントのいくつかの機能を実装し、それをコンポーネントにカプセル化します (サンプルコード)

js は、Element の入力コンポーネントのいくつかの機能を実装し、それをコンポーネントにカプセル化します (サンプルコード)

現在実装されているのは、基本的な使用方法、クリア可能なボックス、パスワードボックスです。参考リンク: https://element.eleme.cn/#/zh-CN/component/input

HTML コード: コンポーネントをテストする場合は、対応するコンポーネントのコメントを解除するだけです。赤でマークされた js と css を自分の場所に合わせて変更することを忘れないでください。

<!DOCTYPE html>
<html>
  <ヘッド>
    <メタ文字セット="utf-8">
    <title>js はクリア可能な入力コンポーネントを実装します</title>
    <script src="../js/input/jsInput.js"></script>
    <link rel="スタイルシート" type="text/css" href="../css/jsInput.css"/>
  </head>
  <本文>
    <スクリプト>
      //通常の入力ボックス document.write(createElementInput())
      //クリア可能な関数を追加
      //document.write(createElementInput("クリア可能"))
      //パスワードボックスのshow-passwordを実装する
      //document.write(createElementInput("パスワードを表示"))
    </スクリプト>
  </本文>
</html>

JSコード:

関数createElementInput(str){
  var temp = str;
  var html = "<div id='my_input_div' onmouseover='addClearNode(\""+str+"\")'' onmouseout='hiddenClearNode(\""+str+"\")''>";
  html += "<input id='my_input' placeholder='コンテンツを入力してください'";
  if(str){
     if(str == 'パスワードを表示'){
       html+=" type = 'パスワード' ";
     }
  } 
  html += "oninput='addClearNode(\""+str+"\")'";
  html += "onclick='changeColor(\""+str+"\")'";
  html += "onblur='hiddenClearNode(\""+str+"\")'/>";
  if(str){
   html += "<input id='"+str+"' onmousedown='changeValue(\""+str+"\")'/>";
  }  
  html += "</div>"
  html を返します。
}

//box-shadow: 0 0 0 20px pink; 影を追加して境界線を表示します function changeColor(str){
  //アラート(文字列)
  document.getElementById("my_input_div").style.boxShadow="0 0 0 2px #409eff";
  //入力の値を取得します。var value = document.getElementById('my_input').value;
  var ボタン = document.getElementById(str);
  //入力ボックスに値があるかどうかのチェックを追加し、クリアボタンを表示します。if (value) {
    if(ボタン){
      button.style.visibility = "表示"
    }
  }
}
//コンテンツに入った後にこのイベントを使用する必要があります function addClearNode(str){
  var 値 = document.getElementById('my_input').value;
  var ボタン = document.getElementById(str);
  //アラート(値)
  if(値){
    if(ボタン){
      //ボタンを表示可能に設定する button.style.visibility = 'visible'
    }
  }それ以外{
    //属性が存在するかどうかを判断します if(button){
      //ボタンを非表示に設定する button.style.visibility = 'hidden'
    }
  }
  //選択後、div は選択したスタイルを追加し、強調表示します。 document.getElementById("my_input_div").style.outline="0 0 0 2px #409eff";
}
//入力値を変更する関数 changeValue(str){
  if(str){
    if(str == 'クリア可能'){
      clearValues(文字列);
    }else if(str == 'show-password'){
      パスワードを表示します。
    }
  }
  
}
// 入力値をクリアする function clearValues(str) {
  document.getElementById("my_input").value = "";
  document.getElementById(str).style.visibility = "非表示";
  //まだ選択状態なので、div の境界線で影が強調表示されます document.getElementById("my_input_div").style.boxShadow="0 0 0 2px #409eff"
}

//クリアボタンを非表示にする function hiddenClearNode(str){
  var ボタン = document.getElementById(str);
  if(ボタン){
    button.style.visibility="非表示";
  }
  //div シャドウを 0 に設定する
  document.getElementById("my_input_div").style.boxShadow="0 0 0"
}

//パスワードを表示する関数 showPassword(){
  var myInput = document.getElementById('my_input');
  var パスワード = myInput.value;
  var type = myInput.type;
  //アラート(タイプ)
  if(型){
    if(type == 'パスワード'){
      myInput.type = '';
      myInput.value = パスワード;
    }それ以外{
      myInput.type = 'パスワード';
      myInput.value = パスワード;
    }
  }
  //まだ選択状態なので、div の境界線で影が強調表示されます document.getElementById("my_input_div").style.boxShadow="0 0 0 2px #409eff"
}

CSSコード:

#私の入力div{
  幅: 150ピクセル;
  境界線: 1px 銀色;
  境界線の半径: 4px;
  位置: 相対的;
}
#私の入力{
  高さ: 30px;
  幅:100ピクセル;
  左マージン: 6px;
  境界線: なし;
  アウトライン: なし;
  カーソル: ポインタ;
}
#クリア可能{
  高さ: 20px;
  幅: 15px;
  テキスト配置: 中央;
  可視性:非表示;
  境界線: なし;
  アウトライン: なし;
  色: #409eff;
  カーソル: ポインタ;
  背景画像: url(../image/clear.svg);
  背景繰り返し: 繰り返しなし;
  背景サイズ: 12px;
  位置: 絶対;
  上: 10px;
  左: 120px;
  表示: インラインブロック;
}
#パスワードを表示{
  高さ: 20px;
  幅: 15px;
  テキスト配置: 中央;
  可視性:非表示;
  境界線: なし;
  アウトライン: なし;
  色: #409eff;
  カーソル: ポインタ;
  背景画像: url(../image/eye.svg);
  背景繰り返し: 繰り返しなし;
  背景サイズ: 12px;
  位置: 絶対;
  上: 10px;
  左: 120px;
  表示: インラインブロック;
}

残りの機能も徐々に改善されていきます。

これで、Pure js を使用して Element の入力コンポーネントの一部の機能を実装し (徐々に改善)、コンポーネントにカプセル化する方法についての記事は終了です。入力コンポーネント機能の実装に関するより関連性の高い js コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript axiosのインストールとパッケージ化のケースの詳細な説明
  • 相同性とクロスドメイン、jsonp(関数カプセル化)、CORS原則の詳細な分析
  • Vue.jsは背景テーブルコンポーネントのカプセル化を管理します
  • JavaScript オブジェクト指向の実践の詳細説明: カプセル化とオブジェクトのドラッグ
  • ネイティブ js カプセル化シームレスカルーセル機能
  • ネイティブ JS カプセル化 vue タブ切り替え効果
  • jsはjQueryをカプセル化する簡単な方法とチェーン操作の詳細な説明を実装します
  • JavaScript はプロトタイプのカプセル化カルーセルを実装します
  • JavaScriptスローモーションアニメーション機能のカプセル化方法
  • JavaScript キャンバスカプセル化動的クロック
  • Jackson の JSON ツールクラスのカプセル化について JsonUtils の使用
  • 単一リンクリストの JavaScript カプセル化のサンプルコード
  • 一般的なフロントエンドJavaScriptメソッドのカプセル化

<<:  MySQL thread_stack 接続スレッドの最適化

>>:  CentOS で RPM を使用して MySQL 5.6 をインストールするチュートリアル

推薦する

HTML独習の旅(I)基本要素と属性の練習(自分でコードを書く)

私は W3school のチュートリアルに従いました。チュートリアルはとても良いと思います。各セクシ...

Ubuntu のインストール グラフィック ドライバーと Cuda チュートリアル

目次1. 元のドライバーをアンインストールする2. 新しいグラフィックカードドライバーをダウンロード...

Dockerコンテナでルート権限を取得する方法

まず、コンテナが稼働している必要がありますコンテナのCONTAINER IDは、sudo docke...

CentOS 8にJenkinsをインストールする方法

CentOS 8 に Jenkins をインストールするには、root アカウントまたは sudo ...

Node.js とブラウザのグローバル オブジェクトの違いの概要

Node.js では、.js ファイルは完全なスコープ (モジュール) です。したがって、var に...

Vue が 4 レベルのナビゲーションと検証コードを実装する方法の例

効果: まず5つのVueインターフェースを作成する1.home.vueページ <テンプレート&...

MySQL オンライン DDL ツール gh-ost 原理分析

目次1. はじめに1.1 原則1.2 プロセス1.3 特徴1.4 githubアドレス2. テスト環...

IDEA Maven プロジェクトで Tomcat をデバッグ モードで実行する詳細なチュートリアル

1. pom.xmlに次の依存関係を追加します。 <依存関係> <groupId&...

Linuxでユーザーが所属するグループを変更する方法

Linuxでユーザーが所属するグループを変更する1. ユーザーのグループを設定する usermod ...

MySQLデータベースの数千万件のデータクエリとストレージの詳細な説明

目次百万レベルのデータ処理ソリューションデータストレージ構造設計クエリステートメントの最適化1000...

Dockerはnginxをデプロイし、フォルダとファイル操作をマウントします

この間、私は docker を勉強していたのですが、nginx をデプロイするときに行き詰まりました...

ウェブサイトメンテナンスページのリスト構築のヒント

また、多くの場合、メンテナンスのために Web サイトを少なくとも数分間オフラインにする必要がありま...

Mysql5.7.17 winx64.zip 解凍バージョンのインストールと設定のグラフィックチュートリアル

1. mysql-5.7.17-winx64.zip をダウンロードします。リンク: https:/...

Vue3+Vite+TS は、要素プラスビジネスコンポーネントの二次カプセル化を実装します sfasga

目次1. 構造文字列2. タプルを返す3. Dict辞書にアクセスする4. 図書館を利用する5. リ...

インデックスとテーブルリターンをカバーするMySQLの使い方

インデックスの2つの主要なカテゴリ使用されるストレージエンジン: MySQL 5.7 InnoDBク...