使用vue中messagebox中自定义,实现弹出多个输入框,分别为请输入姓名、手机号、性别、年龄、地址
时间: 2023-07-10 21:34:28 浏览: 824
使用vue实现各类弹出框组件
在Vue中,可以使用Element UI的MessageBox组件来实现自定义弹出框。具体实现方法如下:
1. 首先,需要在项目中引入Element UI的MessageBox组件和样式:
```html
<!-- index.html -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
```
2. 在Vue组件中使用MessageBox组件:
```html
<!-- MyComponent.vue -->
<template>
<div>
<el-button @click="showInputDialog">打开输入框</el-button>
</div>
</template>
<script>
export default {
methods: {
showInputDialog() {
const fields = ["姓名", "手机号", "性别", "年龄", "地址"];
const results = {};
let index = 0;
const inputDialog = this.$prompt(fields[index], "输入框", {
inputPattern: /^\S+$/,
inputErrorMessage: "输入不能为空",
distinguishCancelAndClose: true,
cancelButtonText: "取消",
confirmButtonText: "下一步",
inputValidator: (value) => {
const valid = value !== "";
if (!valid) {
this.$message.warning("输入不能为空");
}
return valid;
},
});
inputDialog.then(({ value, action }) => {
if (action === "cancel") {
this.$message.info("取消输入");
return;
}
results[fields[index]] = value;
index++;
if (index < fields.length) {
inputDialog.title = fields[index];
inputDialog.inputValue = "";
} else {
this.$messagebox({
title: "输入结果",
message: Object.entries(results)
.map(([k, v]) => `${k}: ${v}`)
.join("<br>"),
dangerouslyUseHTMLString: true,
});
}
});
},
},
};
</script>
```
该代码实现了弹出多个输入框,并且将输入框的结果保存到一个对象中。如果用户输入了所有的输入框,那么将会弹出一个消息框,显示所有输入框的结果。如果用户取消了任何一个输入框,那么将不会弹出消息框。
在该代码中,我们使用了Element UI的`$prompt`方法来弹出输入框,使用了`inputPattern`和`inputValidator`属性来设置输入框的校验规则,使用了`distinguishCancelAndClose`属性来区分用户是点击了取消还是关闭按钮。在用户输入完一个输入框后,我们会根据当前索引判断是否需要继续弹出输入框。最后,我们使用了Element UI的`$messagebox`方法来弹出消息框。
阅读全文