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 のハードリンクとソフトリンクの原理と使用法の分析
1. Webデザイナーウォール 2. Veerleのブログ 3. チュートリアル9 4. UXブース...
MySQL の explain コマンドは SQL のパフォーマンスを分析できます。その 1 つが ...
<br />構造と階層により複雑さが軽減され、読みやすさが向上します。記事やサイトが整理...
目次間違い1: データの列が多すぎる誤解2: 共同クエリが多すぎる誤解3: ENUMの代わりにSET...
序文バックエンド開発では、一度に大量のデータがロードされ、メモリやディスク IO のオーバーヘッドが...
nginx バージョン 1.11.3次の構成を使用すると、検証は無効になり、クロスドメインの問題が依...
以前、Markdown をレンダリングするときに、mavonEditor のプレビュー モードを使用...
次のグラフは、100 個の異なる要素で iframe を作成するのにどれくらいの時間がかかるかを示し...
1. 2 列レイアウトとは何ですか? 2 列レイアウトには、左側が固定幅で右側が適応幅のレイアウトと...
最近、テスト サーバーのオペレーティング システムを Cent0S 7.5 にアップグレードし、Py...
1. DockerでのPostgresデータベースのバックアップ注文: docker exec it...
外部結合の構文は次のとおりです。フィールド名を選択FROM テーブル名 1 LEFT|RIGHT|F...
操作中に Docker コンテナの公開ポートを変更または追加する必要がある場合がありますが、実行中の...
目次Node.jsとはNodeJSをインストールするNode を使用して Hello World を...
この記事では、参考までにMYSQLログとバックアップとリストアについて紹介します。具体的な内容は以下...