国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ElementUI淺嘗輒止33:Form 表單

這篇具有很好參考價值的文章主要介紹了ElementUI淺嘗輒止33:Form 表單。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Form 表單:日常業(yè)務中很常見,由輸入框、選擇器、單選框、多選框等控件組成,用以收集、校驗、提交數(shù)據(jù),常見于表單請求、登錄,數(shù)據(jù)校驗等業(yè)務操作中

1.如何使用?

包括各種表單項,比如輸入框、選擇器、開關、單選框、多選框等。

/*在 Form 組件中,每一個表單域由一個 Form-Item 組件構成,表單域中可以放置各種類型的表單控件,包括 Input、Select、Checkbox、Radio、Switch、DatePicker、TimePicker*/

<el-form ref="form" :model="form" label-width="80px">
  <el-form-item label="活動名稱">
    <el-input v-model="form.name"></el-input>
  </el-form-item>
  <el-form-item label="活動區(qū)域">
    <el-select v-model="form.region" placeholder="請選擇活動區(qū)域">
      <el-option label="區(qū)域一" value="shanghai"></el-option>
      <el-option label="區(qū)域二" value="beijing"></el-option>
    </el-select>
  </el-form-item>
  <el-form-item label="活動時間">
    <el-col :span="11">
      <el-date-picker type="date" placeholder="選擇日期" v-model="form.date1" style="width: 100%;"></el-date-picker>
    </el-col>
    <el-col class="line" :span="2">-</el-col>
    <el-col :span="11">
      <el-time-picker placeholder="選擇時間" v-model="form.date2" style="width: 100%;"></el-time-picker>
    </el-col>
  </el-form-item>
  <el-form-item label="即時配送">
    <el-switch v-model="form.delivery"></el-switch>
  </el-form-item>
  <el-form-item label="活動性質(zhì)">
    <el-checkbox-group v-model="form.type">
      <el-checkbox label="美食/餐廳線上活動" name="type"></el-checkbox>
      <el-checkbox label="地推活動" name="type"></el-checkbox>
      <el-checkbox label="線下主題活動" name="type"></el-checkbox>
      <el-checkbox label="單純品牌曝光" name="type"></el-checkbox>
    </el-checkbox-group>
  </el-form-item>
  <el-form-item label="特殊資源">
    <el-radio-group v-model="form.resource">
      <el-radio label="線上品牌商贊助"></el-radio>
      <el-radio label="線下場地免費"></el-radio>
    </el-radio-group>
  </el-form-item>
  <el-form-item label="活動形式">
    <el-input type="textarea" v-model="form.desc"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="onSubmit">立即創(chuàng)建</el-button>
    <el-button>取消</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        form: {
          name: '',
          region: '',
          date1: '',
          date2: '',
          delivery: false,
          type: [],
          resource: '',
          desc: ''
        }
      }
    },
    methods: {
      onSubmit() {
        console.log('submit!');
      }
    }
  }
</script>

W3C 標準中有如下規(guī)定:

When there is only one single-line text input field in a form, the user agent should accept Enter in that field as a request to submit the form.

即:當一個 form 元素中只有一個輸入框時,在該輸入框中按下回車應提交該表單。如果希望阻止這一默認行為,可以在?<el-form>?標簽上添加?@submit.native.prevent。

2.行內(nèi)表單

當垂直方向空間受限且表單較簡單時,可以在一行內(nèi)放置表單。

設置 inline 屬性可以讓表單域變?yōu)樾袃?nèi)的表單域

<el-form :inline="true" :model="formInline" class="demo-form-inline">
  <el-form-item label="審批人">
    <el-input v-model="formInline.user" placeholder="審批人"></el-input>
  </el-form-item>
  <el-form-item label="活動區(qū)域">
    <el-select v-model="formInline.region" placeholder="活動區(qū)域">
      <el-option label="區(qū)域一" value="shanghai"></el-option>
      <el-option label="區(qū)域二" value="beijing"></el-option>
    </el-select>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="onSubmit">查詢</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        formInline: {
          user: '',
          region: ''
        }
      }
    },
    methods: {
      onSubmit() {
        console.log('submit!');
      }
    }
  }
</script>

3.對齊方式

根據(jù)具體目標和制約因素,選擇最佳的標簽對齊方式。

//通過設置 label-position 屬性可以改變表單域標簽的位置,可選值為 top、left,當設為 top 時標簽會置于表單域的頂部

<el-radio-group v-model="labelPosition" size="small">
  <el-radio-button label="left">左對齊</el-radio-button>
  <el-radio-button label="right">右對齊</el-radio-button>
  <el-radio-button label="top">頂部對齊</el-radio-button>
</el-radio-group>
<div style="margin: 20px;"></div>
<el-form :label-position="labelPosition" label-width="80px" :model="formLabelAlign">
  <el-form-item label="名稱">
    <el-input v-model="formLabelAlign.name"></el-input>
  </el-form-item>
  <el-form-item label="活動區(qū)域">
    <el-input v-model="formLabelAlign.region"></el-input>
  </el-form-item>
  <el-form-item label="活動形式">
    <el-input v-model="formLabelAlign.type"></el-input>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        labelPosition: 'right',
        formLabelAlign: {
          name: '',
          region: '',
          type: ''
        }
      };
    }
  }
</script>

4.表單驗證

在防止用戶犯錯的前提下,盡可能讓用戶更早地發(fā)現(xiàn)并糾正錯誤

//Form 組件提供了表單驗證的功能,只需要通過 rules 屬性傳入約定的驗證規(guī)則,并將 Form-Item 的 prop 屬性設置為需校驗的字段名即可。

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
  <el-form-item label="活動名稱" prop="name">
    <el-input v-model="ruleForm.name"></el-input>
  </el-form-item>
  <el-form-item label="活動區(qū)域" prop="region">
    <el-select v-model="ruleForm.region" placeholder="請選擇活動區(qū)域">
      <el-option label="區(qū)域一" value="shanghai"></el-option>
      <el-option label="區(qū)域二" value="beijing"></el-option>
    </el-select>
  </el-form-item>
  <el-form-item label="活動時間" required>
    <el-col :span="11">
      <el-form-item prop="date1">
        <el-date-picker type="date" placeholder="選擇日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
      </el-form-item>
    </el-col>
    <el-col class="line" :span="2">-</el-col>
    <el-col :span="11">
      <el-form-item prop="date2">
        <el-time-picker placeholder="選擇時間" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
      </el-form-item>
    </el-col>
  </el-form-item>
  <el-form-item label="即時配送" prop="delivery">
    <el-switch v-model="ruleForm.delivery"></el-switch>
  </el-form-item>
  <el-form-item label="活動性質(zhì)" prop="type">
    <el-checkbox-group v-model="ruleForm.type">
      <el-checkbox label="美食/餐廳線上活動" name="type"></el-checkbox>
      <el-checkbox label="地推活動" name="type"></el-checkbox>
      <el-checkbox label="線下主題活動" name="type"></el-checkbox>
      <el-checkbox label="單純品牌曝光" name="type"></el-checkbox>
    </el-checkbox-group>
  </el-form-item>
  <el-form-item label="特殊資源" prop="resource">
    <el-radio-group v-model="ruleForm.resource">
      <el-radio label="線上品牌商贊助"></el-radio>
      <el-radio label="線下場地免費"></el-radio>
    </el-radio-group>
  </el-form-item>
  <el-form-item label="活動形式" prop="desc">
    <el-input type="textarea" v-model="ruleForm.desc"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('ruleForm')">立即創(chuàng)建</el-button>
    <el-button @click="resetForm('ruleForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        ruleForm: {
          name: '',
          region: '',
          date1: '',
          date2: '',
          delivery: false,
          type: [],
          resource: '',
          desc: ''
        },
        rules: {
          name: [
            { required: true, message: '請輸入活動名稱', trigger: 'blur' },
            { min: 3, max: 5, message: '長度在 3 到 5 個字符', trigger: 'blur' }
          ],
          region: [
            { required: true, message: '請選擇活動區(qū)域', trigger: 'change' }
          ],
          date1: [
            { type: 'date', required: true, message: '請選擇日期', trigger: 'change' }
          ],
          date2: [
            { type: 'date', required: true, message: '請選擇時間', trigger: 'change' }
          ],
          type: [
            { type: 'array', required: true, message: '請至少選擇一個活動性質(zhì)', trigger: 'change' }
          ],
          resource: [
            { required: true, message: '請選擇活動資源', trigger: 'change' }
          ],
          desc: [
            { required: true, message: '請?zhí)顚懟顒有问?, trigger: 'blur' }
          ]
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
  }
</script>

5.自定義校驗規(guī)則

這個例子中展示了如何使用自定義驗證規(guī)則來完成密碼的二次驗證。

本例還使用status-icon屬性為輸入框添加了表示校驗結(jié)果的反饋圖標。

<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
  <el-form-item label="密碼" prop="pass">
    <el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input>
  </el-form-item>
  <el-form-item label="確認密碼" prop="checkPass">
    <el-input type="password" v-model="ruleForm.checkPass" autocomplete="off"></el-input>
  </el-form-item>
  <el-form-item label="年齡" prop="age">
    <el-input v-model.number="ruleForm.age"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
    <el-button @click="resetForm('ruleForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      var checkAge = (rule, value, callback) => {
        if (!value) {
          return callback(new Error('年齡不能為空'));
        }
        setTimeout(() => {
          if (!Number.isInteger(value)) {
            callback(new Error('請輸入數(shù)字值'));
          } else {
            if (value < 18) {
              callback(new Error('必須年滿18歲'));
            } else {
              callback();
            }
          }
        }, 1000);
      };
      var validatePass = (rule, value, callback) => {
        if (value === '') {
          callback(new Error('請輸入密碼'));
        } else {
          if (this.ruleForm.checkPass !== '') {
            this.$refs.ruleForm.validateField('checkPass');
          }
          callback();
        }
      };
      var validatePass2 = (rule, value, callback) => {
        if (value === '') {
          callback(new Error('請再次輸入密碼'));
        } else if (value !== this.ruleForm.pass) {
          callback(new Error('兩次輸入密碼不一致!'));
        } else {
          callback();
        }
      };
      return {
        ruleForm: {
          pass: '',
          checkPass: '',
          age: ''
        },
        rules: {
          pass: [
            { validator: validatePass, trigger: 'blur' }
          ],
          checkPass: [
            { validator: validatePass2, trigger: 'blur' }
          ],
          age: [
            { validator: checkAge, trigger: 'blur' }
          ]
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
  }
</script>

6.?動態(tài)增減表單項

//除了在 Form 組件上一次性傳遞所有的驗證規(guī)則外還可以在單個的表單域上傳遞屬性的驗證規(guī)則

<el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic">
  <el-form-item
    prop="email"
    label="郵箱"
    :rules="[
      { required: true, message: '請輸入郵箱地址', trigger: 'blur' },
      { type: 'email', message: '請輸入正確的郵箱地址', trigger: ['blur', 'change'] }
    ]"
  >
    <el-input v-model="dynamicValidateForm.email"></el-input>
  </el-form-item>
  <el-form-item
    v-for="(domain, index) in dynamicValidateForm.domains"
    :label="'域名' + index"
    :key="domain.key"
    :prop="'domains.' + index + '.value'"
    :rules="{
      required: true, message: '域名不能為空', trigger: 'blur'
    }"
  >
    <el-input v-model="domain.value"></el-input><el-button @click.prevent="removeDomain(domain)">刪除</el-button>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
    <el-button @click="addDomain">新增域名</el-button>
    <el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        dynamicValidateForm: {
          domains: [{
            value: ''
          }],
          email: ''
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      },
      removeDomain(item) {
        var index = this.dynamicValidateForm.domains.indexOf(item)
        if (index !== -1) {
          this.dynamicValidateForm.domains.splice(index, 1)
        }
      },
      addDomain() {
        this.dynamicValidateForm.domains.push({
          value: '',
          key: Date.now()
        });
      }
    }
  }
</script>

7.數(shù)字類型驗證

數(shù)字類型的驗證需要在?v-model?處加上?.number?的修飾符,這是?Vue?自身提供的用于將綁定值轉(zhuǎn)化為?number?類型的修飾符。

<el-form :model="numberValidateForm" ref="numberValidateForm" label-width="100px" class="demo-ruleForm">
  <el-form-item
    label="年齡"
    prop="age"
    :rules="[
      { required: true, message: '年齡不能為空'},
      { type: 'number', message: '年齡必須為數(shù)字值'}
    ]"
  >
    <el-input type="age" v-model.number="numberValidateForm.age" autocomplete="off"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('numberValidateForm')">提交</el-button>
    <el-button @click="resetForm('numberValidateForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        numberValidateForm: {
          age: ''
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
  }
</script>

嵌套在?el-form-item?中的?el-form-item?標簽寬度默認為零,不會繼承?el-form?的?label-width。如果需要可以為其單獨設置?label-width?屬性。

8.表單內(nèi)組件尺寸控制

通過設置 Form 上的?size?屬性可以使該表單內(nèi)所有可調(diào)節(jié)大小的組件繼承該尺寸。Form-Item 也具有該屬性。

//如果希望某個表單項或某個表單組件的尺寸不同于 Form 上的size屬性,直接為這個表單項或表單組件設置自己的size即可。

<el-form ref="form" :model="sizeForm" label-width="80px" size="mini">
  <el-form-item label="活動名稱">
    <el-input v-model="sizeForm.name"></el-input>
  </el-form-item>
  <el-form-item label="活動區(qū)域">
    <el-select v-model="sizeForm.region" placeholder="請選擇活動區(qū)域">
      <el-option label="區(qū)域一" value="shanghai"></el-option>
      <el-option label="區(qū)域二" value="beijing"></el-option>
    </el-select>
  </el-form-item>
  <el-form-item label="活動時間">
    <el-col :span="11">
      <el-date-picker type="date" placeholder="選擇日期" v-model="sizeForm.date1" style="width: 100%;"></el-date-picker>
    </el-col>
    <el-col class="line" :span="2">-</el-col>
    <el-col :span="11">
      <el-time-picker placeholder="選擇時間" v-model="sizeForm.date2" style="width: 100%;"></el-time-picker>
    </el-col>
  </el-form-item>
  <el-form-item label="活動性質(zhì)">
    <el-checkbox-group v-model="sizeForm.type">
      <el-checkbox-button label="美食/餐廳線上活動" name="type"></el-checkbox-button>
      <el-checkbox-button label="地推活動" name="type"></el-checkbox-button>
      <el-checkbox-button label="線下主題活動" name="type"></el-checkbox-button>
    </el-checkbox-group>
  </el-form-item>
  <el-form-item label="特殊資源">
    <el-radio-group v-model="sizeForm.resource" size="medium">
      <el-radio border label="線上品牌商贊助"></el-radio>
      <el-radio border label="線下場地免費"></el-radio>
    </el-radio-group>
  </el-form-item>
  <el-form-item size="large">
    <el-button type="primary" @click="onSubmit">立即創(chuàng)建</el-button>
    <el-button>取消</el-button>
  </el-form-item>
</el-form>

<script>
  export default {
    data() {
      return {
        sizeForm: {
          name: '',
          region: '',
          date1: '',
          date2: '',
          delivery: false,
          type: [],
          resource: '',
          desc: ''
        }
      };
    },
    methods: {
      onSubmit() {
        console.log('submit!');
      }
    }
  };
</script>

?Form表單組件的大致內(nèi)容就是這些,若想深入淺出可以前往表單組件文章來源地址http://www.zghlxwxcb.cn/news/detail-709534.html

到了這里,關于ElementUI淺嘗輒止33:Form 表單的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ElementUI淺嘗輒止15:Table 表格

    用于展示多條結(jié)構類似的數(shù)據(jù),可對數(shù)據(jù)進行排序、篩選、對比或其他自定義操作。 Table組件比較常用,常見于數(shù)據(jù)查詢,報表頁面,用來展示表格數(shù)據(jù)。 使用帶斑馬紋的表格,可以更容易區(qū)分出不同行的數(shù)據(jù)。 可將表格內(nèi)容 highlight 顯示,方便區(qū)分「成功、信息、警告、危

    2024年02月09日
    瀏覽(21)
  • ElementUI淺嘗輒止19:Badge 標記

    出現(xiàn)在按鈕、圖標旁的數(shù)字或狀態(tài)標記。 可展示新消息數(shù)量。 可自定義最大值。 可以顯示數(shù)字以外的文本內(nèi)容。 以紅點的形式標注需要關注的內(nèi)容。 關于Badge 標記,它常見于網(wǎng)站或內(nèi)容平臺的消息數(shù)量展示。?

    2024年02月10日
    瀏覽(24)
  • ElementUI淺嘗輒止23:Loading 加載

    Loading加載組件:加載數(shù)據(jù)時顯示動效。 常見于加載數(shù)據(jù)量大的業(yè)務操作,附帶動態(tài)效果。 在表格等容器中加載數(shù)據(jù)時顯示。 可自定義加載文案、圖標和背景色。 頁面數(shù)據(jù)加載時顯示。 Loading 還可以以服務的方式調(diào)用。引入 Loading 服務: 在需要調(diào)用時: 其中? options ?參數(shù)

    2024年02月10日
    瀏覽(19)
  • ElementUI淺嘗輒止25:MessageBox 彈框

    模擬系統(tǒng)的消息提示框而實現(xiàn)的一套模態(tài)對話框組件,用于消息提示、確認消息和提交內(nèi)容。 從場景上說,MessageBox 的作用是美化系統(tǒng)自帶的? alert 、 confirm ?和? prompt ,因此適合展示較為簡單的內(nèi)容。如果需要彈出較為復雜的內(nèi)容,還是要使用 Dialog。 當用戶進行操作時會

    2024年02月10日
    瀏覽(22)
  • ElementUI淺嘗輒止18:Avatar 頭像

    用圖標、圖片或者字符的形式展示用戶或事物信息。 常用于管理系統(tǒng)或web網(wǎng)站的用戶頭像,在用戶賬戶模塊更換頭像操作也能看到關于Avatar組件的應用。 通過? shape ?和? size ?設置頭像的形狀和大小。 支持三種類型:圖標、圖片和字符 當展示類型為圖片的時候,圖片加載失

    2024年02月09日
    瀏覽(20)
  • ElementUI淺嘗輒止32:NavMenu 導航菜單

    為網(wǎng)站提供導航功能的菜單。常用于網(wǎng)站平臺頂部或側(cè)邊欄菜單導航。 垂直菜單,可內(nèi)嵌子菜單。

    2024年02月09日
    瀏覽(17)
  • ElementUI淺嘗輒止28:Dropdown 下拉菜單

    將動作或菜單折疊到下拉菜單中。 移動到下拉菜單上,展開更多操作。 可使用按鈕觸發(fā)下拉菜單。 可以配置 click 激活或者 hover 激活。 可以 hide-on-click 屬性來配置。 點擊菜單項后會觸發(fā)事件,用戶可以通過相應的菜單項 key 進行不同的操作 Dropdown 組件提供除了默認值以外的

    2024年02月09日
    瀏覽(91)
  • ElementUI淺嘗輒止27:Steps 步驟條

    引導用戶按照流程完成任務的分步導航條,可根據(jù)實際應用場景設定步驟,步驟不得少于 2 步。 設置 active 屬性,接受一個 Number ,表明步驟的 index,從 0 開始。需要定寬的步驟條時,設置 space 屬性即可,它接受 Number ,單位為 px ,如果不設置,則為自適應。設置 finish-stat

    2024年02月09日
    瀏覽(21)
  • ElementUI淺嘗輒止36:Input 輸入框

    通過鼠標或鍵盤輸入字符 Input 為受控組件,它 總會顯示 Vue 綁定值 。 通常情況下,應當處理? input ?事件,并更新組件的綁定值(或使用 v-model )。否則,輸入框內(nèi)顯示的值將不會改變。不支持? v-model ?修飾符。 通過? disabled ?屬性指定是否禁用 input 組件 使用 clearable 屬性

    2024年02月09日
    瀏覽(20)
  • ElementUI淺嘗輒止14:Carousel 走馬燈

    在有限空間內(nèi),循環(huán)播放同一類型的圖片、文字等內(nèi)容 結(jié)合使用 el-carousel 和 el-carousel-item 標簽就得到了一個走馬燈?;脽羝膬?nèi)容是任意的,需要放在 el-carousel-item 標簽中。默認情況下,在鼠標 hover 時底部的指示器時就會觸發(fā)切換。通過設置 trigger 屬性為 click ,可以達到點

    2024年02月10日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包