ドロップダウン付きのテキストボックスを使用すると、ユーザーはドロップダウン リストから入力を選択したり、入力値を自由に入力したりできます。これは比較的一般的な UI 要素です。ユーザーに代替オプションを提供して操作時間を節約したり、少数の状況に適応する可能性を提供したりすることもできます。 当初、このコンポーネントは非常に一般的で、そのまま適用できる既成の例がたくさんあるはずだと考えていました。しかし、調べてみると、多くの類似コンポーネントには、検索、複数選択など、機能が多すぎることがわかりました(一言で言えば、複雑すぎるのです)。そこで、シンプルで使いやすいものを自分で書いてみようと思いました。困惑していたときにとても助けていただいたフェイさんに感謝したいと思います。 この UI 要素は、Common Bar Width アプリで使用されます。 コンポーネントの登録カプセル化されたコンポーネント コードをコピーして貼り付け、グローバル コンポーネントを登録します。 設計時には、テキスト入力ボックス、数値入力ボックス、パーセンテージ入力ボックスなど、さまざまな種類の入力ボックスが存在する可能性があることが考慮されました。したがって、カプセル化されたコード内の入力を制限するために、 <script type="text/x-template" id="ドロップダウン"> <div class="dropdown" v-if="オプション"> <!-- ドロップダウン入力 --> <input :type="タイプ" :disabled="無効" v-model="入力値" @focus="オプションを表示()" @blur="終了()" @keyup="キーモニター" @input="input_value = inputRule(type)" /> ... </スクリプト> <スクリプト> Vue.component('ドロップダウン', { テンプレート: '#dropdown', 小道具: { タイプ: 文字列、 オプション: 配列、 無効: ブール値、 値: 文字列 }, ... メソッド: { 入力ルール:関数(タイプ){ var 値; スイッチ(タイプ){ ケース 'テキスト': 値 = this.input_value.replace(/[^a-zA-Z0-9]/g,''); 壊す; ケース '番号': 値 = this.input_value.replace(/^(?![+-]?\d+(\.\d+)?$)/g,''); 壊す; ケース「パーセンテージ」: 値 = this.input_value.replace(/[^\d]/g,''); 値 = 値 > 100 ? '100' : 値; 値 = 値 < 0 ? '0' : 値; 壊す; デフォルト: console.log("制限なし"); } 戻り値; }, ... </スクリプト> コンポーネントの呼び出しカスタム ラベル呼び出しコンポーネントを追加します。 <ドロップダウンタイプ = "テキスト" :options = "テキストオプション" :value = "テキスト値" :disabled = "テキストが無効" @on_change_input_value = "テキスト変更時"> </ドロップダウン> データの受け渡し最後に、props でデータを親コンポーネントに動的にバインドします。
さらに、入力ボックスの値を更新するために親インスタンスで定義する必要もあります。 on_change_input_value: 値を更新する データ: 関数 () { 戻る { テキスト値: 'ccc', text_disabled: 偽、 テキストオプション: [ { id: 1、名前: 'a' }, { id: 2、名前: 'bb' }, { id: 3、名前: 'ccc' }, { id: 4、名前: 'dddd' }, { id: 5, 名前: 'eeeee' }, { id: 6, 名前: 'fffff ' }, { id: 7, 名前: 'gggggg' }, { id: 8、名前: 'hhhhhhh' }, { id: 9, 名前: 'iiiiiii' }, ]、 ... } }, ... メソッド: { onTextChange: 関数 (新しいテキスト値) { this.text_value = 新しいテキスト値; }, ... }, ソースコード GitHub これで、Vue.js Textbox with Dropdown コンポーネントに関するこの記事は終了です。Vue.js Textbox with Dropdown コンポーネントの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL の 2 種類の一時テーブルの使用方法の詳細な説明
>>: Nginx におけるサーバーとロケーションのマッチングロジックの詳細な理解
1. HTMLコードコードをコピーコードは次のとおりです。経験値: <span class=...
/etc/my.cnf または /etc/mysql/my.cnf ファイルを変更する [クライアン...
序文Vue Router は、Vue.js の公式ルーティング マネージャーです。 Vue.js の...
Docker ベースのデータベースをデプロイするsudo docker pull influxdb ...
インターネット技術の発展に伴い、ユーザーはますます Web ページに依存するようになり、Web フロ...
エディターは、Vue3のデータの関連する問題も共有します。次のような例を見てみましょう。 Vue.c...
ルーティングとは何ですか?ルーティングとは、相互接続されたネットワークを介して送信元ステーションから...
停止したすべてのDockerコンテナを1つのコマンドで再起動するdocker ps -a | gre...
目次1. 切り捨て操作1.1 MySQL truncate はどのような操作を実行しますか? 1.2...
この記事では、例を使用して、MySQL のデータベース間トランザクション XA 操作について説明しま...
1. 問題の説明何らかの理由により、中国でのDockerイメージのダウンロード速度は特に遅くなります...
Electronのインストール cnpm 電子をインストール -g electron-package...
序文:場合によっては、MySQL に接続されたセッションが異常終了することが多く、エラー ログに「通...
1 BEM命名標準とはBem は、ブロック、要素、修飾子の略語であり、Yandex チームによって...
(1)HTTPリクエストを減らす。 (リソース ファイルをマージし、イメージ スプライトを使用します...