问题描述:使用layer.prompt弹框显示两个/多个输入框效果。
实现效果截图如下:
解决思路:通过控制台找到prompt弹框中的input输入框的class,往其前插入HTML代码
(jquery写法【$(".class").before("HTML代码")】)
注意:prompt默认确定按钮在取消按钮的坐标,如果想让确定按钮放在后面,设置确定按钮样式为【float:right】
完整代码:
<template>
<div>
<h1>vue-layer学习</h1>
<br />
<button @click="showPromptBox">prompt</button>
</div>
</template>
<script>
import $ from "jquery";
export default {
data() {
return {};
},
mounted() {
console.log("输出this.$layer", this.$layer);
},
methods: {
showPromptBox() {
this.$layer.prompt(
{
title: "个人信息",
formType: 0, //输入框类型,支持0(文本)默认1(密码)2(多行文本)
value: "", //初始时的值,默认空字符
maxlength: 140, //可输入文本的最大长度,默认500
area: ["400px", "270px"], //自定义文本域宽高
scrollbar: false,
},
(age, index) => {
if ($("#username").val() == "" || age == "") {
this.$message.warning("姓名和年龄不能为空");
return;
} else {
console.log(
`获取弹框的信息 姓名:${$("#username").val()} 年龄:${age}`
);
this.$layer.close(index);
}
}
);
// 往class=vl-input元素前插入
$(".vl-input").before(
`<div style="margin-bottom:8px">姓名</div><input id="username" data-v-6c69dd9a type="text" style="margin-bottom:10px" class="vl-input"/><div style="margin-bottom:8px">年龄</div>`
);
},
},
};
</script>
<style lang="less">
body {
.vl-notify.vl-notify-alert {
border: 0px solid #fff;
border-radius: 4px;
h2.vl-notice-title {
height: 50px;
line-height: 50px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
background: #20a0ff;
color: #fff;
font-size: 14px;
.icon-remove {
color: #fff;
font-size: 4px;
}
}
.prompt-btn {
margin-top: 15px;
// 将确定按钮置于取消按钮右边
button {
width: 60px;
&:first-child {
float: right;
margin-right: 0px;
}
&:last-child {
width: 60px;
&:hover {
color: #409eff;
border-color: #c6e2ff;
background-color: #ecf5ff;
}
}
}
}
}
}
</style>