1. 程式人生 > >element-ui之form表單校驗的使用詳解

element-ui之form表單校驗的使用詳解

先吐槽一下,個人感覺element-ui提供的文件寫的太少,用的時候會踩很多坑。

如:表單驗證方法 傳入的value沒有值  等。

下面,是我對element-ui  form表單驗證使用的總結,應該能解決大部分問題,或者,也可以直接拿過去修改使用。

(本文程式碼使用的是 vue.js + element-ui)

要寫人名、年齡資訊的表單校驗(人的數量使用者可自己增減)

1. el-form 上,model繫結的資料必須是json物件格式

(不一定說“必須”,只有是json物件格式的時候,element-ui提供的校驗方法功能才完全可用)

2. el-form-item 上,prop繫結的值必須可以通過  .  的方式從el-form上的model繫結的物件中找到。

例: input繫結的是name,el-form上的model繫結的是formData,他們的關係是formData.list[0].name

        所以,prop繫結的值應該是字串:list[0].name

        只有這樣寫,校驗方法rule_name傳入的value才是輸入框中的值。

 3.  提交按鈕要寫在el-form-item中,提交方法要用element-ui提供的方法,這樣,element-ui會在提交前進行表單校驗

下面是程式碼

<style scoped>
.align{
    display: flex;
    align-items: center;
}
.alignT{
    display: flex;
    align-items: flex-start;
}
.iconBtn{
    color: #409EFF;
    font-size: 26px;
    cursor: pointer;
}
</style>

<template>
    <div>
        <el-form :model="formData" ref="formData" status-icon style="width:100%;">
            <!-- 引數輸入 -->
            <el-row>資訊輸入:</el-row>
            <el-row :gutter="30">
                <el-col :span="20">
                    <el-row 
                        :gutter="20" 
                        v-for="(item,index) in formData.list"
                        :key="index"
                        class="alignT spaceTop1">
                        <el-col :span=".5">
                            <i class="iconBtn" @click="listMethod(index)" :class="{'el-icon-circle-plus-outline': index == 0,'el-icon-remove-outline': index>0}" style="margin-top:6px;"></i>
                        </el-col>
                            <el-col :span="10">
                                <el-form-item :prop="'list[' + index + '].name'" :rules="{validator: rule_name,trigger: 'blur'}">
                                    <el-input placeholder="請輸入名稱" v-model="item.name" auto-complete="off"></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="4">
                                <el-form-item  :prop="'list[' + index + '].age'"  :rules="{validator: rule_age,trigger: 'blur'}">
                                    <el-input placeholder="請輸入年齡" v-model="item.age" auto-complete="off"></el-input>
                                </el-form-item>
                            </el-col>
                    </el-row>
                </el-col>
            </el-row>

            <!-- 按鈕 -->
            <el-row>
                <el-col :span=".5">
                    <el-form-item>
                        <el-button type="primary" @click="submit('formData')">提交</el-button>
                    </el-form-item>
                </el-col>
            </el-row>
        </el-form>
    </div>
</template>

<script>
    export default {
        name: 'elementForm',            /* element-ui表單驗證 */
        data() {
            return {
                formData: {
                    list: [{name: '',age: ''}]
                }
            };
        },
        mounted() {
        },
        methods: {
            // 表單增減操作
            listMethod(n) {
                if (n > 0) {
                    this.formData.list.splice(n,1);
                }else{
                    let o = {name: '',age: ''};
                    this.formData.list.push(o);
                };
            },
            // 姓名校驗方法
            rule_name(rule,value,callback) {
                console.log(value);
                // 姓名不能為空
                if (!value) {
                    return callback(new Error('請輸入姓名'));
                };
                callback();
            },
            // 年齡校驗方法
            rule_age(rule,value,callback) {
                if (!value) {
                    return callback(new Error('請輸入年齡'));
                };

                let n = Number(value);

                if (n < 1) {
                    return callback(new Error('年齡不能小於1歲'));
                };

                if (n > 200) {
                    return callback(new Error('年齡不能大於200歲'));
                };

                callback();
            },
            // 提交
            submit(formName) {
                this.$refs[formName].validate((valid) => {
                    if (!valid) {
                        // 驗證不通過禁止提交
                        console.log('驗證不通過');
                        return false;
                    };

                    console.log('驗證通過');
                });
            }
        }
    };
</script>

相關推薦

element-uiform的使用

先吐槽一下,個人感覺element-ui提供的文件寫的太少,用的時候會踩很多坑。 如:表單驗證方法 傳入的value沒有值  等。 下面,是我對element-ui  form表單驗證使用的總結,應該能解決大部分問題,或者,也可以直接拿過去修改使用。 (本文程式碼使用的

element-ui el-table 可編輯資料的el-form

使用vue.js、element-ui開發前段的過程中,業務需求,需要實現el-table可動態新增、修改、刪除資料。同時儲存資料時需要使用  el-form自帶的校驗功能校驗資料的正確性。如下圖: 頁面程式碼部分:這裡需要注意 el-form-item 中:prop的

vue+element中自定義特殊字元

本次專案基於vue和element-ui,需要在前端使用者輸入的時候去校驗輸入的內容中是否含有特殊符號,如果有,則提示使用者不支援輸入特殊符號。 校驗規則方法 export function checkSpecificKey(str) { var special

JavaScript進階(四)form

前言       本章將學習表單的校驗,作為一個前面學習的總結! 方法 1.概念 我們知道,在學習HTML的時候,我們做了一個非常醜陋的表單,裡面有文字框、單選鈕、複選框等一系列表單元素。這些都是隨便填寫的,沒有加任何的校驗。也就是說正常情況下我們需

UI元件的

在開發中,表單校驗是必不可少elementUI和iviewUI的表單校驗都是類似的 目前我們開發大部分都用UI元件,下面來說一下element UI的表單校驗。 1最簡單的一種校驗 之前樓主用過iview的表單動態rules,規則如果是物件還好,直接賦值

vue+element 學習筆記 form驗證input數字必輸(只能是數字)問題

序言 在開發專案的過程中,表單需要設定某些欄位輸入的值必須是數字,且是必輸欄位,我使用了element提供的方法v-model.number,但是出現了一點問題。具體見圖: 用了v-model.nuber以後: 看到了圖以後很顯然意見,他雖然完成了必輸欄位需要時

element-ui Rules 配置 常用黑科技

## type > 指示type要使用的驗證器。可識別的型別值為: - #### `string`:型別必須為`string`。`type` 預設是 `string` ``` // 校驗 string: [ {type: 'string', message: `請輸入字串`, trigger: 'b

easyui 進階tree easyui 進階、自定義

前言 easyui是一種基於jQuery的使用者介面外掛集合,它為建立現代化,互動,JavaScript應用程式,提供必要的功能,完美支援HTML5網頁的完整框架,節省網頁開發的時間和規模。非常的簡單易學。 easyui中文網:http://www.jeasyui.net/ easyui官網:http:

element-ui Form驗證規則全

element的form表單非常好用,自帶了驗證規則,用起來很方便,官網給的案例對於一些普通場景完全沒問題,不過一些複雜場景的驗證還得自己多看文件摸索,自己經過數次爬坑 之後,總結了幾種form表單的驗證規則,為了便於閱讀,驗證規則是拆分的,完整的程式碼放在文末  

easyui 進階、自定義

前言 easyui是一種基於jQuery的使用者介面外掛集合,它為建立現代化,互動,JavaScript應用程式,提供必要的功能,完美支援HTML5網頁的完整框架,節省網頁開發的時間和規模。非常的簡單易學。 今天我們來學習表單校驗以及如何自定義表單校驗 正文 一、從標記建立驗證框(vali

Jquery UI Dialog Form 提交

我專注的是Dialog的Form表單提交的問題。 不知道大家使用Dialog的方式是什麼,我就說說我用的方式吧。 <divid="dialog">        <formid="dialogForm"method="post"action="

bootstrapbootstrapvalidator

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%     String path = request.getContextPath();     String b

javascript以及正則表示式

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/java

javascript高階

表單校驗是指:規範資料的輸入格式: 方式一: 思路:(1)建立一個form標籤,使用onsumbit事件 (2)建立文字輸入項,建立submit提交按鈕, (3)使用繫結的第一種方式:1根據id拿到標籤物件,在根據標籤物件拿到該標籤的value值        2if判斷為

Element

bsp model http valid trigger chang rul ack div 1.表單要綁定一個對象 :model="ruleForm", 然後綁定規則:rules=rule 2.要檢驗的form-item要添加prop,例如:prop="url" 3.

JQuery中內容操作函數、validation

調用方法 scrip 註意 語言 rul asc javascrip 最前面插入 獲取 JQuery:內容體拼接(可以直接拼接元素節點和內容節點)   JQuery實現:     方案1:A.append(B); == B.appendTo(A);A的後面拼接B    

常用原生js庫

rim pro fun 常用 ltrim turn () js庫 his 1.字符串去除左右空格繼承形式// 除去左右空格String.prototype.Trim = function() { return this.replace(/(^\s*)|(\s*$)/g,

常用

通過 let div 返回 letter 常用 fun als 英文 /*用途:檢查輸入字符串是否只由英文字母和數字組成 輸入:obj 字符串 返回:如果通過驗證返回true,否則返回false*/ function isNumberOrLetter(obj){

Angular

result tex lar uil img 輸入 password value mod 1.html <form [formGroup]="formModel" (submit)="submit()"> <div> 用戶名

JavaScript學習——完善註冊頁面

函數 提示 步驟 表格 ges function img 但是 最終 1、之前我們已經使用彈出框的方式實現了表單校驗的功能,但是此種方式用戶體驗效果很差 我們希望做成把提示信息和校驗結果放在輸入欄的後面。 2、步驟分析 (此案例基於HTML&CSS——網站註冊頁面實