<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="../js/vue.js"></script> </head> <body> <div id="app"> <!-- 不让跳转方式1,直接JS代码封死跳转 --> <!-- 不让跳转方式2,让submit执行时不是提交而是执行方法 --> <form action="javascript:void(0)" @submit="send()"> <!-- v-model加上.trim可以实现取出前后部分的空白 --> 用户名<input type="text" v-model.trim="user.username"/><br><br> 密码<input type="password" v-model="user.password"/><br><br> <!-- v-model.number可以将收集到的字符串转换为数字 --> 年龄<input type="number" v-model.number="user.age"/><br><br> 性别: 男<input type="radio" name="gender" value="men" v-model="user.gender"/> 女<input type="radio" name="gender" value="women" v-model="user.gender"/> <br><br> 爱好 <!-- 对于checkbox来说,如果没有手动指定value,那么默认以这个标签的checked作为value --> 旅游<input type="checkbox" value="trip" v-model="user.hobbies"/> 运动<input type="checkbox" value="sprots" v-model="user.hobbies"/> 唱歌<input type="checkbox" value="sing" v-model="user.hobbies"/> <br><br> 学历 <select v-model="user.grade"> <option value="">请选择学历</option> <option value="zk">专科</option> <option value="bk">本科</option> <option value="ss">硕士</option> </select> <br><br> 简介 <!-- 最好使用lazy,这样可以节省资源,让这个数据在我们离开光标即onblur的情况下再收集,避免浪费资源 --> <textarea cols="50" rows="15" v-model.trim.lazy="user.introduce"></textarea> <br><br> <input type="checkbox" v-model="user.accept"/>阅读并接受协议 <br><br> <!-- 用阻止方法也是一样的 --> <button @click.prevent="send()">提交</button> </form> </div> <script> const vm = new Vue({ el : "#app", data : { user : { username : "", password : "", age : "", gender : "", hobbies : [], grade : "", introduce : "", accept : "" }, }, methods : { send(){ alert("ajax..."); console.log(JSON.stringify(this.$date)); console.log(JSON.stringify(this.user)); } } }); </script> </body> </html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../js/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 不让跳转方式1,直接JS代码封死跳转 -->
<!-- 不让跳转方式2,让submit执行时不是提交而是执行方法 -->
<form action="javascript:void(0)" @submit="send()">
<!-- v-model加上.trim可以实现取出前后部分的空白 -->
用户名<input type="text" v-model.trim="user.username"/><br><br>
密码<input type="password" v-model="user.password"/><br><br>
<!-- v-model.number可以将收集到的字符串转换为数字 -->
年龄<input type="number" v-model.number="user.age"/><br><br>
性别:
男<input type="radio" name="gender" value="men" v-model="user.gender"/>
女<input type="radio" name="gender" value="women" v-model="user.gender"/>
<br><br>
爱好
<!-- 对于checkbox来说,如果没有手动指定value,那么默认以这个标签的checked作为value -->
旅游<input type="checkbox" value="trip" v-model="user.hobbies"/>
运动<input type="checkbox" value="sprots" v-model="user.hobbies"/>
唱歌<input type="checkbox" value="sing" v-model="user.hobbies"/>
<br><br>
学历
<select v-model="user.grade">
<option value="">请选择学历</option>
<option value="zk">专科</option>
<option value="bk">本科</option>
<option value="ss">硕士</option>
</select>
<br><br>
简介
<!-- 最好使用lazy,这样可以节省资源,让这个数据在我们离开光标即onblur的情况下再收集,避免浪费资源 -->
<textarea cols="50" rows="15" v-model.trim.lazy="user.introduce"></textarea>
<br><br>
<input type="checkbox" v-model="user.accept"/>阅读并接受协议
<br><br>
<!-- 用阻止方法也是一样的 -->
<button @click.prevent="send()">提交</button>
</form>
</div>
<script>
const vm = new Vue({
el : "#app",
data : {
user : {
username : "",
password : "",
age : "",
gender : "",
hobbies : [],
grade : "",
introduce : "",
accept : ""
},
},
methods : {
send(){
alert("ajax...");
console.log(JSON.stringify(this.$date));
console.log(JSON.stringify(this.user));
}
}
});
</script>
</body>
</html>
VUE框架画出一组表单form实现数据收集并以json的形式回传------VUE框架
于 2023-11-30 14:46:04 首次发布