Utilisez iview pour créer dynamiquement des formulaires
Un générateur de formulaires avec des fonctions de collecte de données, de vérification et de soumission, notamment des cases à cocher, des boutons radio, des zones de saisie et des zones de sélection déroulantes et d'autres éléments ainsi que des fonctions de sélection de l'heure, de la date, de la couleur et de téléchargement de fichiers/images.
Exemple

Installer
Copier après la connexion
OU
1 2 3 | git clone https:
cd form-create
npm install
|
Copier après la connexion
Introduire
1 2 3 4 5 6 7 8 9 | <!-- import Vue -->
<script src= "node_modules/vue/dist/vue.min.js" ></script>
<!-- import iview -->
<link rel= "stylesheet" href= "node_modules/iview/dist/styles/iview.css" >
<script src= "node_modules/iview/dist/iview.min.js" ></script>
<!-- import formCreate -->
<script src= "dist/form-create.min.js" ></script>
|
Copier après la connexion
Utiliser
1 2 3 4 5 6 | let rules = [],el = document.body;
new Vue({
mounted: function (){
var $f = this. $formCreate (rules,el);
}
})
|
Copier après la connexion
paramètres $formCreate
rules
règles de formulaire [inputRule,selectRule,...]
el
Le nœud Dom inséré est par défaut document.body
$f Méthode d'instance
Obtenir les données du formulaire
$f.formData()
Modifier les données du formulaire
$f.changeField(field,value)
Validation du formulaire
$f.validate(successFn,errorFn)
Validation du formulaire champs spécifiés
$f.validateField(field,errorFn)
Réinitialiser le formulaire
$f.resetFields()
Supprimer le formulaire
$f.remove()
Obtenir tous les champs du formulaire
$f.fields()
Soumettre le formulaire
$f.submit()
règles Règles :
champ caché caché
1 2 3 4 5 6 | hiddenRule:
{
type: "hidden" ,
field: "id" ,
value: "14"
}
|
Copier après la connexion
zone de saisie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | inputRule :
{
type: "input" ,
title: "商品名称" ,
field: "goods_name" ,
value: "iphone 7" ,
props: {
"type" : "text" ,
"clearable" :false,
"disabled" : false,
"readonly" : false,
"rows" : 4,
"autosize" : false,
"number" : false,
"autofocus" : false,
"autocomplete" : "off" ,
"placeholder" : "请输入商品名称" ,
"size" : "default" ,
"spellcheck" : false
},
validate:[
{ required: true, message: 'Mailbox cannot be empty' , trigger: 'blur' },
{ type: 'email' , message: 'Incorrect email format' , trigger: 'blur' }
]
}
|
Copier après la connexion
valider les règles de validation du formulaire, veuillez consulter la configuration détaillée : https://github.com/yiminghe/async-validator
bouton radio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | radioRule :
{
type: "radio" ,
title: "是否包邮" ,
field: "is_postage" ,
value: "0" ,
options:[
{value: "0" ,label: "不包邮" ,disabled:false},
{value: "1" ,label: "包邮" ,disabled:true}
],
props: {
"type" :undefined,
"size" : "default" ,
"vertical" :false
},
validate:[]
}
|
Copier après la connexion
case à cocher
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | checkboxRule :
{
type: "checkbox" ,
title: "标签" ,
field: "label" ,
value:[
"1" , "2" , "3"
],
options:[
{value: "1" ,label: "好用" ,disabled:true},
{value: "2" ,label: "方便" ,disabled:false},
{value: "3" ,label: "实用" ,disabled:false},
{value: "4" ,label: "有效" ,disabled:false}
],
props: {
"size" : "default"
},
validate:[]
}
|
Copier après la connexion
commutateur
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | switchRule :
{
type: "switch" ,
title: "是否上架" ,
field: "is_show" ,
value: "1" ,
props: {
"size" : "default" ,
"disabled" :false,
"trueValue" : "1" ,
"falseValue" : "0"
},
slot: {
open: "上架" ,
close: "下架"
},
validate:[]
}
|
Copier après la connexion
sélecteur de sélection
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | selectRule :
{
type: "select" ,
field: "cate_id" ,
title: "产品分类" ,
value: "104" ,
props: {
"multiple" : false,
"clearable" : false,
"filterable" : false,
"size" : "default" ,
"placeholder" : "请选择" ,
"not-found-text" : "无匹配数据" ,
"placement" : "bottom" ,
"disabled" : false
},
options: [
{ "value" : "104" , "label" : "生态蔬菜" , "disabled" : false},
{ "value" : "105" , "label" : "新鲜水果" , "disabled" : false}
]
}
|
Copier après la connexion
Sélecteur de date DatePicker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | DatePickerRule :
{
type: "DatePicker" ,
field: "section_day" ,
title: "活动日期" ,
value: 1519110955000 || new Date (),
props: {
"type" : "date" ,
"format" : "yyyy-MM-dd" ,
"placement" : "bottom-start" ,
"placeholder" : "请选择获得时间" ,
"confirm" :false,
"size" : "default" ,
"disabled" :false,
"clearable" :true,
"readonly" :false,
"editable" :false
},
validate:[]
}
|
Copier après la connexion
Sélecteur d'heure TimePicker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | TimePickerRule :
{
type: "TimePicker" ,
field: "section_time" ,
title: "活动时间" ,
value: [],
props: {
"type" : "timerange" ,
"format" : "HH:mm:ss" ,
"steps" : [],
"placement" : "bottom-start" ,
"placeholder" : "请选择获得时间" ,
"confirm" :false,
"size" : "default" ,
"disabled" :false,
"clearable" :true,
"readonly" :false,
"editable" :false
},
validate:[]
}
|
Copier après la connexion
Zone de saisie du numéro InputNumber
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | InputNumberRule :
{
type: "InputNumber" ,
field: "sort" ,
title: "排序" ,
value: 0,
props: {
"max" : undefined,
"min" : undefined,
"step" : 1,
"size" : "default" ,
"disabled" :false,
"readonly" :false,
"editable" :true,
"precision" :0
},
validate:[]
}
|
Copier après la connexion
Sélecteur de couleurs ColorPicker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ColorPickerRule :
{
type: "ColorPicker" ,
field: "coloe" ,
title: "颜色" ,
value: '#ff7271' ,
props: {
"alpha" : false,
"hue" : true,
"recommend" : false,
"size" : "default" ,
"colors" :[],
"format" : "hex"
},
validate:[]
}
|
Copier après la connexion
Télécharger le téléchargement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | UploadRule :
{
type: "Upload" ,
field: "pic" ,
title: "轮播图" ,
value: [],
props: {
"type" : "select" ,
"action" : "" ,
"headers" : {},
"multiple" : false,
"data" :{},
"name" : "" ,
"with-credentials" :false,
"show-upload-list" :true,
"accept" : "" ,
"format" :[],
"max-size" :undefined,
"beforeUpload" :()=>{},
"onProgress" :()=>{},
"onSuccess" :( push, response, file, fileList)=>{
let filePath = response.data.filePath;
push(filePath);
},
"onError" :()=>{},
"onPreview" :()=>{},
"onRemove" :()=>{},
"onFormatError" :()=>{},
"onExceededSize" :()=>{},
"default-file-list" :[
{
name: 'img1.jpg' ,
url: 'http://www.xxx.com/img1.jpg'
},
{
name: 'img2.jpg' ,
url: 'http://www.xxx.com/img2.jpg'
}
]
},
validate:[]
}
|
Copier après la connexion
accepter le type de fichier : https:// Developer.mozilla.org/ en-US/docs/Web/HTML/Element/input#attr-accept
Recommandations associées :
formulaire pour réaliser le partage automatique de code
Utilisation des balises de formulaire HTML
Exemple de méthode JavaScript pour ajouter dynamiquement des éléments de formulaire de formulaire
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!