这个
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Multi-Step Form</title>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1-dev.js"></script>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
padding: 20px;
}
.form-container {
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
max-width: 400px;
margin: auto;
}
h2 {
text-align: center;
color: #333;
}
label {
display: block;
margin: 10px 0 5px;
color: #555;
}
input {
width: 100%;
padding: 10px;
margin-bottom: 20px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
width: 38%;
padding: 10px;
border: none;
border-radius: 4px;
background-color: #007bff;
color: white;
cursor: pointer;
margin: 5px 1%;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div id="app" class="form-container">
<div v-if="currentStep < formConfig.length">
<h2>Step {{ currentStep + 1 }}</h2>
<form @submit.prevent="nextStep">
<div v-for="field in formConfig[currentStep].fields" :key="field.model">
<label>{{ field.label }}</label>
<input
v-model="formData[field.model]"
:type="field.type"
required
/>
</div>
<button type="button" @click="prevStep" v-if="currentStep > 0">Previous</button>
<button type="submit">Next</button>
</form>
</div>
<div v-else>
<h2>Form Submitted!</h2>
<pre>{{ formData }}</pre>
<button @click="resetForm">Reset</button>
</div>
</div>
<script>
new Vue({
el: '#app',
data: {
currentStep: 0,
formData: {},
formConfig: [
{
step: 1,
fields: [
{ label: "Name", type: "text", model: "name" },
{ label: "Email", type: "email", model: "email" }
]
},
{
step: 2,
fields: [
{ label: "Address", type: "text", model: "address" },
{ label: "Phone", type: "tel", model: "phone" }
]
}
]
},
methods: {
nextStep() {
this.currentStep++;
},
prevStep() {
this.currentStep--;
},
resetForm() {
this.currentStep = 0;
this.formData = {};
}
}
});
</script>
</body>
</html> 网友回复


