フォームデータの収集

v-modelを使用してフォームの値を収集し、双方向バインディングを実現します.値はデフォルトで収集されます.タイプがチェックボックスの場合、デフォルトのコレクションはブール値であり、選択されているかどうかを示します;

一、型式

1. テキスト テキスト ボックス、パスワード パスワード ボックス

値を収集しますユーザー入力は値値です。

账号:<input type="text" v-model="account">
密码:<input type="password" v-model="password">

2.ラジオチェックボックス

収集された値は値の値であり、値の値はタグ属性に設定する必要があります

性别:
男<input type="radio" name="sex" value="male" v-model="sex">
女<input type="radio" name="sex" value="female" v-model="sex">

3. チェックボックス

値が設定されていない場合:

収集されるのは、複数選択ボックスが選択されているかどうかのブール、つまりtrue または false

値 value を設定する場合:

(1) 初期値は非配列型です。収集される型はブール型で、true または false です。

(2) 初期値は配列型です。収集されるのは、値の値で構成される配列です。

爱好:
吃饭<input type="checkbox" v-model="hobby" value="eat">
睡觉<input type="checkbox" v-model="hobby" value="sleep">
打游戏<input type="checkbox" v-model="hobby" value="game">
new Vue({
        el:"#root",
        data:{
            //使用一个demoData存起来,方便输入整个表单数据,注意前面的数据调用的时候,也要在前面加一个demoData
            demoData:{
                numb:'',
                passw:'',
                age:18,
                sex:'',
                hobby:[], //注意:这里要写成数组形式
                school:'',
                order:'',
                agree:'' //这里只需要判断是否勾选,只需返回true或false
            }
        },
        methods:{
            demo(){
                console.log(JSON.stringify(this.demoData))
            }
        }
})

 2. v-model の修飾子

1、トリム

収集されたデータは、文字列の前後のスペースを自動的に削除します。

2、怠け者

リアルタイムでデータを更新せずにフォーカスが失われたときにデータを収集します

3、番号

入力文字列を有効な数値に変換します

完全なコード:

<div id="root">
        <!-- 实现点击‘账号’也可以获取焦点
        <label for="demo">账号:</label> 
        <input type="text" id="demo"> -->

        <!-- prevent用于阻止默认行为 -->
        <form @submit.prevent="demo"> 
            <!-- v-model.trim:实现去除字符串前后的空格,但是无法去除字符串中间的空格 -->
            账号:<input type="text" v-model.trim="demoData.numb"><br><br>
            密码:<input type="password" v-model="demoData.passw"><br><br>
            <!-- 这里的年龄设置了type类型为number,输入框就不能输入非数字,设置v-model.number修改该数值时就会转换为数字类型而不是字符串 -->
            年龄:<input type="number" v-model.number="demoData.age"><br><br>
            性别:
            男<input type="radio" name="sex" value="male" v-model="demoData.sex">
            女<input type="radio" name="sex" value="female" v-model="demoData.sex"><br><br>
            爱好:
            吃饭<input type="checkbox" v-model="demoData.hobby" value="eat">
            睡觉<input type="checkbox" v-model="demoData.hobby" value="sleep">
            打游戏<input type="checkbox" v-model="demoData.hobby" value="game"><br><br>
            所属校区:
            <select v-model="demoData.school">
                <option value="">请选择所在校区</option>
                <option value="shipai">石牌校区</option>
                <option value="daxuecheng">大学城校区</option>
                <option value="nanhai">南海校区</option>
                <option value="shanwei">汕尾校区</option>
            </select>
            <br><br>
            其他:
            <!-- 多行信息 -->
            <!-- lazy:在失去焦点的一瞬间再收集信息,而不是实时进行 -->
            <textarea v-model.lazy="demoData.order"></textarea> 
            <br><br>
            <input type="checkbox" v-model="demoData.agree">请您阅读并接受<a href="http://www.baidu.com">《用户协议》</a>
            <br><br>
            <button>提交</button>
        </form>
</div>
new Vue({
        el:"#root",
        data:{
            //使用一个demoData存起来,方便输入整个表单数据,注意前面的数据调用的时候,也要在前面加一个demoData
            demoData:{
                numb:'',
                passw:'',
                age:18,
                sex:'',
                hobby:[], //注意:这里要写成数组形式
                school:'',
                order:'',
                agree:'' //这里只需要判断是否勾选,只需返回true或false
            }
        },
        methods:{
            demo(){
                console.log(JSON.stringify(this.demoData))
            }
        }
})

操作結果:

 

 

おすすめ

転載: blog.csdn.net/weixin_46376652/article/details/125694042