Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使用される 3 つの検証方法を紹介します。 1. 検証用のデータを入力するフォームの内容 <!-- フォーム --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item label="ユーザー名:" prop="userName"> <el-input v-model="rulesForm.userName" スタイル="幅:300px" 最大長さ="50"/> </el-form-item> </el-form>
データ データ() { 戻る { //他のデータ定義を省略します... // フォーム検証 formRules: { ユーザー名: [ {required: true、message: "ユーザー名を入力してください"、trigger: "blur"} ] } } }
2. インラインで書くフォームの内容 <!-- フォーム --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item label="銀行名:" prop="accountName" :rules="[{required:true,message:'銀行名を入力してください',trigger:'blur'}]"> <el-input v-model="rulesForm.accountName" スタイル="幅:300px" 最大長さ="50"/> </el-form-item> </el-form>
データデータには内容がありません 3. 外部定義ルールのインポートフォームの内容 <!-- フォーム --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item label="銀行カード番号:" prop="accountNumber"> <el-input v-model="rulesForm.accountNumber" スタイル="width:300px" 最大長さ="19"/> </el-form-item> </el-form> フォームの内容は最初の方法と一致しているため、ここでは詳細には触れません。 スクリプトの内容 <スクリプト> // 外部検証ルールの導入 import {validateAccountNumber} from "@/utils/validate"; // 銀行カードのアカウントが正しいかどうかを判定する const validatorAccountNumber = (rule, value, callback) => { if (!値) { return callback(new Error("アカウント情報を入力してください")); } それ以外 { if (validateAccountNumber(値)) { 折り返し電話(); } それ以外 { コールバックを返します(新しいエラー('アカウント形式が正しくありません')) } } }; エクスポートデフォルト{ データ() { 戻る { //他のデータ定義を省略します... // フォーム検証 formRules: { 口座番号: [ {必須: true、バリデータ: validatorAccountNumber、トリガー: "blur"} ] } } } } </スクリプト>
検証.js /* 銀行口座 */ エクスポート関数validateAccountNumber(str) { 定数reg = /^([1-9]{1})(\d{14}|\d{18})$/ reg.test(str) を返す }
上記はすべてフォーカスを失ったときの検証です。フォームが送信されたときの検証方法を分析してみましょう。 1. フォームの送信ボタン <!-- フォーム --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item> <el-button type="primary" @click="onSubmit('rulesForm')">保存</el-button> <el-button @click="cancel">キャンセル</el-button> </el-form-item> </el-form>
2. 方法 メソッド: { // 保存 onSubmit(formName) { this.$refs[formName].validate(valid => { (有効)の場合{ console.log("送信成功!!"); }それ以外{ console.log("送信エラー!!"); } }); }, // キャンセル cancel() { } } this.$refs[formName].validate: formNameは渡された「rulesForm」であり、<el-form>フォームのrel属性値と一致しているため、検証が必要なフォームが指定されます。 完全なサンプルコードは次のとおりです。 1. ルール <テンプレート> <div class="アプリコンテナ"> <el-tabs v-model="アクティブ名"> <el-tab-pane label="フォーム" name="rulesPane" @tab-click="handleClick"> <!-- フォーム --> <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px"> <el-form-item label="ユーザー名:" prop="userName"> <el-input v-model="rulesForm.userName" スタイル="幅:300px" 最大長さ="50"/> </el-form-item> <el-form-item label="銀行名:" prop="accountName" :rules="[{required:true,message:'銀行名を入力してください',trigger:'blur'}]"> <el-input v-model="rulesForm.accountName" スタイル="幅:300px" 最大長さ="50"/> </el-form-item> <el-form-item label="銀行カード番号:" prop="accountNumber"> <el-input v-model="rulesForm.accountNumber" スタイル="width:300px" 最大長さ="50"/> </el-form-item> <el-form-item> <el-button type="primary" @click="onSubmit('rulesForm')">保存</el-button> <el-button @click="cancel">キャンセル</el-button> </el-form-item> </el-form> </el-tab-pane> </el-tabs> </div> </テンプレート> <スクリプト> 「@/utils/validate」から{validateAccountNumber}をインポートします。 // 銀行カードのアカウントが正しいかどうかを判定する const validatorAccountNumber = (rule, value, callback) => { if (!値) { return callback(new Error("アカウント情報を入力してください")); } それ以外 { if (validateAccountNumber(値)) { 折り返し電話(); } それ以外 { コールバックを返します(新しいエラー('アカウント形式が正しくありません')) } } }; エクスポートデフォルト{ 名前: 「ルール」、 データ() { 戻る { アクティブ名: "rulesPane", デフォルトプロパティ: { 子供: 「子供」、 ラベル: "ラベル" }, ルールフォーム: { }, // フォーム検証 formRules: { ユーザー名: [ { 必須: true、 メッセージ:「ユーザー名を入力してください」 トリガー: 「ぼかし」 } ]、 口座番号: [ { 必須: true、 バリデーター: validatorAccountNumber、 トリガー: 「ぼかし」 } ]、 } }; }, 作成された() {}, マウント() {}, メソッド: { ハンドルクリック(タブ) { }, // キャンセル cancel() { }, // 保存 onSubmit(formName) { this.$refs[formName].validate(valid => { (有効)の場合{ console.log("送信成功!!"); } それ以外 { console.log("送信エラー!!"); false を返します。 } }); } } }; </スクリプト> <スタイル lang="scss"> </スタイル> 2. 検証 /* 銀行口座 */ エクスポート関数validateAccountNumber(str) { 定数reg = /^([1-9]{1})(\d{14}|\d{18})$/ reg.test(str) を返す } レンダリング 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: IDEA を使用して Tomcat を設定し、JSP ファイルを作成する方法
>>: Linux のハードリンクとソフトリンクの原理と使用法の分析
これまでの記事で、フロントエンド開発者にとって必須のツール、スクリプト、リソースのコレクションを紹介...
セル - 表の内容 セルの余白 (表の余白) (cellpadding) - セルの外側の距離を表し...
この記事では、左ボタンと右ボタンをクリックすることで画像を切り替えるjQueryの具体的なコードを例...
ログインを提供し、ユーザー情報データインターフェースを取得するapi/user.js内 '@...
目次JSON は次の 2 つの構造に基づいて構築されます。 2. JSON形式1. オブジェクト2....
水平スクロールはあらゆる状況に適しているわけではありませんが、適切に行えば、Web サイトを他のサイ...
MySQL Limit はセグメント内のデータベース データをクエリでき、主にページングで使用されま...
次のように: -m, --memory メモリ制限。形式は数値と単位です。単位は b、k、m、g の...
目次導入取引の4つの特徴トランザクション分離レベル確認するMVCC現在の読書スナップショット読み取り...
1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...
たくさんのチュートリアルを読みましたが、うまくインストールできませんでした。しばらく試行錯誤した後、...
Centos6.5にmysql5.7.19をインストールするための詳細な手順は次のとおりです。 1....
innobackupex を使用してバックアップする際に MySQL がサーバーに接続できない場合は...
イメージをプルします: [mall@VM_0_7_centos ~]$ sudo docker pu...
1. 一般的なMySQLの設定以下のすべての構成パラメータは、32G のメモリを搭載したサーバーに基...