Vue数据收集

1、什么是表单

在项目开发过程中,凡是需要用户填写的信息都需要用到表单。

./images

#2、form标签

在HTML中我们使用form标签来定义一个表单。而对于form标签来说有两个最重要的属性:action和method。

<form action="/aaa/pro01-HTML/page05-form-target.html" method="post">

</form>

vue禁止form默认发送请求方式

  <form  v-on:submit.prevent>
    <div>
      <input type="search" name="search"   required v-model='inputVaule'>
     </div>
     <div>
      <input type="submit" name="submit" @click='search' value="提交">
     </div>
   </form>

#3、name和value

在用户使用一个软件系统时,需要一次性提交很多数据是非常正常的现象。我们肯定不能要求用户一个数据一个数据的提交,而肯定是所有数据填好后一起提交。那就带来一个问题,服务器怎么从众多数据中识别出来收货人、所在地区、详细地址、手机号码……?

很简单,给每个数据都起一个『名字』,发送数据时用『名字』携带对应的数据,接收数据时通过『名字』获取对应的数据。

在各个具体的表单标签中,我们通过『name属性』来给数据起『名字』,通过『value属性』来保存要发送给服务器的『值』。

但是名字和值之间既有可能是『一个名字对应一个值』,也有可能是『一个名字对应多个值』。

这么看来这样的关系很像我们Java中的Map,而事实上在服务器端就是使用Map类型来接收请求参数的。具体的是类型是:Map<String,String[]>。

name属性就是Map的键,value属性就是Map的值。

有了上面介绍的基础知识,下面我们就可以来看具体的表单标签了。

#4、单行文本框

#①代码

个性签名:<input type="text" name="signal"/><br/>

#②显示效果

./images

#5、密码框

#①代码

密码:<input type="password" name="secret"/><br/>

#②显示效果

./images

#6、单选框

#①代码

你最喜欢的季节是:
<input type="radio" name="season" value="spring" />春天
<input type="radio" name="season" value="summer" checked="checked" />夏天
<input type="radio" name="season" value="autumn" />秋天
<input type="radio" name="season" value="winter" />冬天

<br/><br/>

你最喜欢的动物是:
<input type="radio" name="animal" value="tiger" />路虎
<input type="radio" name="animal" value="horse" checked="checked" />宝马
<input type="radio" name="animal" value="cheetah" />捷豹

#②效果

./images

#③说明

  • name属性相同的radio为一组,组内互斥
  • 当用户选择了一个radio并提交表单,这个radio的name属性和value属性组成一个键值对发送给服务器
  • 设置checked="checked"属性设置默认被选中的radio

#7、多选框

#①代码

你最喜欢的球队是:
<input type="checkbox" name="team" value="Brazil"/>巴西
<input type="checkbox" name="team" value="German" checked="checked"/>德国
<input type="checkbox" name="team" value="France"/>法国
<input type="checkbox" name="team" value="China" checked="checked"/>中国
<input type="checkbox" name="team" value="Italian"/>意大利

#②效果

./images

#8、下拉列表

#①代码

你喜欢的运动是:
<select name="interesting">
    <option value="swimming">游泳</option>
    <option value="running">跑步</option>
    <option value="shooting" selected="selected">射击</option>
    <option value="skating">溜冰</option>
</select>

#②效果

./images

#③说明

  • 下拉列表用到了两种标签,其中select标签用来定义下拉列表,而option标签设置列表项。
  • name属性在select标签中设置。
  • value属性在option标签中设置。
  • option标签的标签体是显示出来给用户看的,提交到服务器的是value属性的值。
  • 通过在option标签中设置selected="selected"属性实现默认选中的效果。

#9、按钮

#①代码

<button type="button">普通按钮</button>
<button type="reset">重置按钮</button>
<button type="submit">提交按钮</button>

#②效果

./images

#③说明

类型 功能
普通按钮 点击后无效果,需要通过JavaScript绑定单击响应函数
重置按钮 点击后将表单内的所有表单项都恢复为默认值
提交按钮 点击后提交表单

#10、表单隐藏域

#①代码

<input type="hidden" name="userId" value="2233"/>

#②说明

通过表单隐藏域设置的表单项不会显示到页面上,用户看不到。但是提交表单时会一起被提交。用来设置一些需要和表单一起提交但是不希望用户看到的数据,例如:用户id等等。

#11、多行文本框

#①代码

自我介绍:<textarea name="desc"></textarea>

#②效果

./images

#③说明

textarea没有value属性,如果要设置默认值需要写在开始和结束标签之间。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>收集表单数据</title>
</head>
<body>
    <div id="root">
        <!-- 设置表单提交事件回调,并且阻止了表单提交的默认行为 -->
        <form @submit.prevent="printForm">
            <!-- 普通的文本输入框,如果使用ajax进行请求的发送,name属性不要也罢,这个没什么要注意的,主要是使用v-model来进行数据的双向绑定 -->
            <label>账号:</label><input type="text" name="account" v-model="account"> <br><br>
            <label>密码:</label><input type="password" name="password" v-model="password"><br><br>

            <!-- 单选框:
            1. 如果需要在多个数据中进行选择,需要为每个input单选框设置value属性值。
            2. 同一类型的单选框要设置一样的name属性。

            3. 如果只是一个单选框,用于勾选是否,比如是否同意某个协议等,值只有false和true,无需name,value,并且双向绑定数据为布尔值,
               true为选中,false为不选中。 -->
            <label>性别:</label>
            男<input type="radio" name="gender" v-model="gender" value="man">
            女<input type="radio" name="gender" v-model="gender" value="woman"><br><br>


            <!-- 多选框:
            1. 如果需要在多个数据中进行选择,需要为每个input单选框设置value属性值。
            2. 同一类型的单选框要设置一样的name属性。
            3. 与该表单元素进行双向绑定的数据类型要为数组。

            4. 如果只是一个多选框,用于勾选是否,比如是否同意某个协议等,值只有false和true,无需name,value,并且双向绑定数据为布尔值,
               true为选中,false为不选中。  -->
            <label>爱好:</label>
            学习<input type="checkbox" name="hobby" v-model="hobby" value="学习">
            游泳<input type="checkbox" name="hobby" v-model="hobby" value="游泳">
            听音乐<input type="checkbox" name="hobby" v-model="hobby" value="听音乐"><br><br>

            <!-- 下拉框:
            1. v-model双向绑定要在select标签完成。
            2. 每个option子标签要设置value -->
            <label>所在地区:</label>
            <select name="address" v-model="address">
                <option value="">请选择地区</option>
                <option value="北京">北京</option>
                <option value="上海">上海</option>
                <option value="深圳">深圳</option>
                <option value="广州">广州</option>
            </select>
            <br><br>
            <!-- 多行输入:与单行输入类似 -->
            <label>其他信息:</label>
            <textarea v-model="otherInfo" ></textarea><br><br>

            <!-- 多选框的另外一种使用方式,仅仅用于判断是否勾选。 -->
            <label>是否同意协议:</label>
            <input type="checkbox" v-model="isAgree">阅读并接受<a href="https://www.baidu.com" target="_blank">用户协议</a><br><br>
            <button>控制台输出收集的表单数据</button>

        </form>
    </div>

    <script src="./js/vue.js"></script>
    <script>
        new Vue({
            el:"#root",
            data:{
                account:"",
                password:"",
                gender:"",
                hobby:[],
                address:"",
                otherInfo:"",
                isAgree:false
            },
            methods: {
                printForm(){
                    console.log(JSON.stringify(this._data));
                }
            },
        })
    </script>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容