- Products -


Software


NEWS


Special



- Knowledge -


Category × Tag



- Like -

公開
作成日:2022/07/26 17:14:24
更新日:2022/07/26 17:15:46

VueとBootstrapで良い感じの入力バリデーションを実装する

・VueとBootstrapを使えば、入力に応じたチェック、フィードバック機構、バリデーションを簡単に実装可能。

使い方


・HTML部分

<div class="my-3">
    <button v-on:click="要素追加()">クリックで追加</button>
</div>
<div v-for="item in 追加コントロール" class="container mb-2">
    <div class="row">
        <div class="col-2 p-2 border bg-light fw-bold text-center">項目{{item.id}}</div>
        <div class="col-9 p-2">
            <!-- v-bind:classで入力チェックの結果を表示。メッセージが返って来たら問題有 -->
            <input type="text" class="w-100 form-control"
                   v-model="item.内容"
                   v-bind:class="{'is-invalid': 入力チェック(item.id), 'is-valid': !入力チェック(item.id)}">
            <!-- 以下の要素を消せば入力チェックのメッセージを消すことが可能。 -->
            <div class="invalid-feedback" v-text="入力チェック(item.id)"></div>
            <div class="valid-feedback">OK!</div>
        </div>
        <div class="col-1 p-2"><button v-on:click="要素削除(item.id)">削除</button></div>
    </div>
</div>
<p>NGコントロール数:{{エラーコントロール個数}}</p>


・js部分

export default {
    name: "vue_basic1",
    components: {
    },
    data: function () {
        return {
            追加コントロール: {},
            追加コントロールカウント: 0,
            エラーコントロール個数: 0
        };
    },
    mounted: async function () {
    },
    methods: {
        要素追加: function () {
            this.追加コントロール[this.追加コントロールカウント] = { id: this.追加コントロールカウント, 内容: "" };
            this.追加コントロールカウント += 1;
            this.エラーコントロール個数確認();
        },
        要素削除: function (target) {
            delete this.追加コントロール[target];
            this.エラーコントロール個数確認();
        },
        入力チェック: function (target) {
            if (this.追加コントロール[target].内容 === "") {
                return "入力してください!"
            }

            if (this.追加コントロール[target].内容.indexOf("0") !== -1) {
                return "0を入力しないでください!";
            }
        },
        エラーコントロール個数確認: function () {
            // DOM更新後に実行する処理
            this.$nextTick(function () {
                this.エラーコントロール個数 = document.querySelectorAll(".is-invalid").length;
            });
        }
    }
}


参考


https://getbootstrap.jp/docs/5.0/forms/validation/

・DOM描画後に処理を実行
https://qiita.com/murashi/items/a68a6d31f788737f0be6


Category



Tag




関連記事


{{tmp.name}}

{{article.category}} {{article.title}}