html表单美化 与 vue表单数据的自动搜集

  • html表单
  • html表单美化
  • html表单数据提交
  • vue表单数据自动搜集
    • v-model的修饰符

html表单

  • input 文本框
<input type="text"  placeholder="请输入姓名" value="内容"/>
  • 密码框
<input type="password" placeholder="请输入密码" value="密码" />
  • 单选框
#单选框,同一个name表示同一组,互斥。
<div class="radio-field"><input type="radio" name="name" id="male"/> <label for="male">男</label><input type="radio" name="name" id="female"/> <label for="female">女</label>
</div>
  • 复选框
#复选框,同一个name的复选框,以数组形式提交数据。
<div class="checkbox-field"><input type="checkbox" name="fruit" id="apple"><label for="apple">苹果</label><input type="checkbox" name="fruit" id="pear"> <label for="pear">梨子</label><input type="checkbox" name="fruit" id="banana"> <label for="banana">香蕉</label><input type="checkbox" name="fruit" id="orange"> <label for="orange">橘子</label>
</div>
  • 普通按钮,提交按钮,重置按钮
<div><p>普通按钮</p><input  class="common-button" type="button" value="普通按钮" />
</div><div><p>提交按钮</p><input class="submit-button" type="submit" value="提交按钮" />
</div><div><p>重置按钮</p><input class="reset-button" type="reset" value="清空按钮">
</div>
  • 文件作用域(选择文件)
<p>文件作用域(选择文件)</p>
<div class="fille-field"><input id="file" type="file"><label for="file">新增文件</label>
</div>
  • 隐藏域(不显示,但是会提交)
<input type="hidden" name="test" value="123">
  • 文本域
 <p>文本域(多行文本输入框)</p>
<div class="textarea-field"><textarea placeholder="提交留言....."></textarea>
</div>
  • 下拉列表框
<p>下拉列表框</p>
<div class="select-field"><select><option value="1">苹果</option><option value="2" selected="selected">梨子</option><option value="3">香蕉</option></select>
</div>

html表单美化

原生html表单控件的美化效果

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><style>.username-field {border: 1px solid #e0e0e0;display: inline-block;width: 400px;height: 44px;display: flex;align-items: center;border-radius: 4px;}.username-field label {margin:  0 20px;font-size: 16px;}.username-field input {outline: none;border: none;flex: 1;font-size: 16px;}.radio-field {}.radio-field input[type=radio]{display: none;}.radio-field input:checked + label{border: 1px solid dodgerblue;color: dodgerblue;}.radio-field label {border: 1px solid #ddd;display: inline-block;padding: 3px 20px;border-radius: 4px;}.checkbox-field input[type=checkbox] {display: none;}.checkbox-field label {border: 1px solid #ddd;display: inline-block;padding: 3px 20px;border-radius: 4px;}.checkbox-field input:checked + label {border: 1px solid dodgerblue;color: dodgerblue;}.checkbox-field input:checked + label:after {content: '1';display: inline-block;color: dodgerblue;padding-left: 5px;}.common-button {height: 40px;width: 80px;border: 1px solid #e0e0e0;outline: none;cursor: pointer;border-radius: 4px;font-size: 14px;}.common-button:hover {border: 1px solid dodgerblue;color: dodgerblue;font-size: 15px;}.submit-button {height: 40px;width: 80px;border: 1px solid #e0e0e0;outline: none;cursor: pointer;border-radius: 4px;font-size: 14px;}.submit-button:hover {border: 1px solid dodgerblue;color: dodgerblue;font-size: 15px;}.reset-button {height: 40px;width: 80px;border: 1px solid #e0e0e0;outline: none;cursor: pointer;border-radius: 4px;font-size: 14px;}.reset-button:hover {border: 1px solid dodgerblue;color: dodgerblue;font-size: 15px;}.fille-field input[type=file]{display: none;}.fille-field label {display: block;width: 80px;height: 80px;border: 1px solid #ddd;display: flex;align-items: center;justify-content: center;border-radius: 4px;}.fille-field label:hover {border: 1px solid dodgerblue;color: dodgerblue;font-size: 15px;}.textarea-field textarea {outline: none;border: 1px solid #e0e0e0;width: 300px;height: 140px;padding: 10px;font-size: 14px;}.select-field select {background:#fafdfe;height:28px;width:180px;line-height:28px;border:1px solid #9bc0dd;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;}.select-field option {width: 300px;height: 36px;font-size: 16px;}</style>
</head>
<body  ><div id="app" ><form><div ><p>文本框</p><div class="username-field"><label for="username">账号:</label> <input id="username" type="text" /></div></div><div><p>密码框</p><div class="username-field"><label for="password">密码:</label> <input  id="password" type="password" /></div></div><div><p>单选框</p><div class="radio-field"><input type="radio" name="name" id="male"/> <label for="male">男</label><input type="radio" name="name" id="female"/> <label for="female">女</label></div></div><div><p>复选框</p><div class="checkbox-field"><input type="checkbox" name="fruit" id="apple"> <label for="apple">苹果</label><input type="checkbox" name="fruit" id="pear"> <label for="pear">梨子</label><input type="checkbox" name="fruit" id="banana"> <label for="banana">香蕉</label><input type="checkbox" name="fruit" id="orange"> <label for="orange">橘子</label></div></div><div><p>普通按钮</p><input  class="common-button" type="button" value="普通按钮" /></div><div><p>提交按钮</p><input class="submit-button" type="submit" value="提交按钮" /></div><div><p>重置按钮</p><input class="reset-button" type="reset" value="清空按钮"></div><div><p>文件作用域(选择文件)</p><div class="fille-field"><input id="file"  type="file"><label for="file">新增文件</label></div></div><div><p>文本域(多行文本输入框)</p><div class="textarea-field"><textarea placeholder="提交留言....."></textarea></div></div><div><p>下拉列表框</p><div class="select-field"><select><option value="1">苹果</option><option value="2" selected="selected">梨子</option><option value="3">香蕉</option></select></div></div><div style="margin-bottom: 50px"></div></form>
</div>
</body>

html表单数据提交

html的被提交数据的表单,都是获取表单控件的name属性和value属性的值,组成name=value形式提交。

form标签
属性:

  • action属性: 表示要提交到的url目标。
  • method属性:表示http请求方式,一般是post。
  • target属性: 表示以什么窗口打开。
  • onsubmit属性 : 表单提交时会冒泡到调用这个方法。可以在此方法中阻止默认的提交事件。
  • onreset属性: 表单重置时会冒泡到调用该方法。以在此方法中阻止默认的重置事件。
#普通的(无文件,图片上传)的表单提交,每个表单项都需要有name属性和value属性。提交的URL,会以 "name=value&name1=value2" 形式组成。
<form action="vue.html" method="get" target="_blank"><div>文本标签 <input type="text"  placeholder="请输入姓名" name="username" /></div><div>密码标签 <input type="password" placeholder="请输入密码" name="password" /></div><div>单选框 <input type="radio" name="gender" value="male"/> 男<input type="radio" name="gender" value="female" /> 女</div><div>复选框 <input type="checkbox" name="hobbit" value="apple"/> 苹果<input type="checkbox" name="hobbit" value="pear"/> 梨子<input type="checkbox" name="hobbit" value="banana"/> 香蕉</div><div>文本作用域<textarea name="detail"></textarea></div><div>下拉列表框<select name="select"><option value="apple">苹果</option><option value="pear">梨子</option><option value="banana">香蕉</option></select></div><div><input type="hidden" name="version" value="1.0" /></div><input type="submit" /><input type="reset" />
</form>

文件上传的表单

#表单默认的enctype为application/x-www-form-urlencoded.
#如果是含有文本的表单,enctype必须为 multipart/form-data。
<form action="vue.html" method="post" enctype="multipart/form-data"><input type="file" name="file"/><input type="submit" /><input type="reset" />
</form>

vue表单数据自动搜集

表单提交数据的核心依然是 name-value。但是vue对表单项中的value做了处理。

1、文本、密码、textarea 表单项,使用v-model代替value。需要提供name,value为用户输入的文本。

2、radio、checkbox 表单项,使用v-model代替checked。radio,checkbox需要提供name,value。只有处于checked状态的表单项才会被提交。

  • 单个复选框,绑定到一个字符串文本。
  • 多个复选框,绑定到同一个数组。
  • 单选框,绑定到一个字符串文本。

3、hidden 表单项,使用v-model代替value。通过v-model绑定的数据代替value。

4、select 表单项,使用v-model代替selected.通过v-model绑定的数据确定选中的数据。

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><style>.username-field {border: 1px solid #e0e0e0;display: inline-block;width: 400px;height: 44px;display: flex;align-items: center;border-radius: 4px;}.username-field label {margin:  0 20px;font-size: 16px;}.username-field input {outline: none;border: none;flex: 1;font-size: 16px;}.radio-field {}.radio-field input[type=radio]{display: none;}.radio-field input:checked + label{border: 1px solid dodgerblue;color: dodgerblue;}.radio-field label {border: 1px solid #ddd;display: inline-block;padding: 3px 20px;border-radius: 4px;}.checkbox-field input[type=checkbox] {display: none;}.checkbox-field label {border: 1px solid #ddd;display: inline-block;padding: 3px 20px;border-radius: 4px;}.checkbox-field input:checked + label {border: 1px solid dodgerblue;color: dodgerblue;}.checkbox-field input:checked + label:after {content: '1';display: inline-block;color: dodgerblue;padding-left: 5px;}.common-button {height: 40px;width: 80px;border: 1px solid #e0e0e0;outline: none;cursor: pointer;border-radius: 4px;font-size: 14px;}.common-button:hover {border: 1px solid dodgerblue;color: dodgerblue;font-size: 15px;}.submit-button {height: 40px;width: 80px;border: 1px solid #e0e0e0;outline: none;cursor: pointer;border-radius: 4px;font-size: 14px;}.submit-button:hover {border: 1px solid dodgerblue;color: dodgerblue;font-size: 15px;}.reset-button {height: 40px;width: 80px;border: 1px solid #e0e0e0;outline: none;cursor: pointer;border-radius: 4px;font-size: 14px;}.reset-button:hover {border: 1px solid dodgerblue;color: dodgerblue;font-size: 15px;}.fille-field input[type=file]{display: none;}.fille-field label {display: block;width: 80px;height: 80px;border: 1px solid #ddd;display: flex;align-items: center;justify-content: center;border-radius: 4px;}.fille-field label:hover {border: 1px solid dodgerblue;color: dodgerblue;font-size: 15px;}</style>
</head>
<body  ><div id="app" ><form  method="get" action="vue.html"><div ><p>文本框{{username}}</p><div class="username-field"><label for="username">账号:</label> <input id="username" type="text" name="username"  v-model="username"/></div></div><div><p>密码框{{password}}</p><div class="username-field"><label for="password">密码:</label> <input  id="password" type="password"  name="password" v-model="password"/></div></div>#单选框radio,只要v-model绑定对象的值,与某一个radio的value匹配,就表示该项选中。<div><p>单选框{{name}}</p><div class="radio-field"><input type="radio" name="name"  value="male"  id="male" v-model="name"/> <label for="male">男</label><input type="radio" name="name" value="female" id="female" v-model="name"/> <label for="female">女</label></div></div>#复选框checkbox,只要v-model绑定对象的数组中的元素,与某一个checkbox的value匹配,就表示该项选中。<div><p>复选框{{fruit}}</p><div class="checkbox-field"><input type="checkbox" name="fruit" value="apple" id="apple" v-model="fruit"> <label for="apple">苹果</label><input type="checkbox" name="fruit" value="pear" id="pear" v-model="fruit"> <label for="pear">梨子</label><input type="checkbox" name="fruit" value="banana"  id="banana" v-model="fruit"> <label for="banana">香蕉</label><input type="checkbox" name="fruit" value="orange" id="orange" v-model="fruit"> <label for="orange">橘子</label></div></div>#下拉框select。只要v-model绑定的对象的值,与某个option的value匹配,就是选中该项。<div><p>下拉框</p><select name="sports"  v-model="sports" id="sports"><option value="basketball">篮球</option><option value="football">足球</option><option value="baseball">棒球</option></select></div><div><input type="hidden" name="version" v-model="version"></div><div><p>普通按钮</p><input  class="common-button" type="button" value="普通按钮" /></div><div><p>提交按钮</p><input class="submit-button" type="submit" value="提交按钮" /></div><div><p>重置按钮</p><input class="reset-button" type="reset" value="清空按钮"></div><div><p>文件作用域(选择文件)</p><div class="fille-field"><input id="file"  type="file"><label for="file">新增文件</label></div></div><div><p>文本域(多行文本输入框){{textarea}}</p><div><textarea name="textarea" v-model="textarea"></textarea></div></div></form>
</div><script>const vm = new Vue({el : '#app',data: {username : '',password : '',name : '',fruit: [],textarea :''},watch:{name( newValue, oldValue ){alert(newValue);}},methods: {error(){alert("图片加载错误");},abort(){alert("图片加载失败");},keyup( event ){console.log("键盘弹起");},keydown( event ){console.log("键盘按下");}}});</script>
</body>
</html>

v-model的修饰符

  • .lazy
#在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步.<!-- 在“change”时而非“input”时更新, 而是失去焦点的时候才更新 -->
<input v-model.lazy="msg" >
  • .number
#如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。<input v-model.number="age" type="number">
  • .trim
#如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:<input v-model.trim="msg">

vue教程 html表单美化 与 vue表单数据的自动搜集相关推荐

  1. antd vue表单验证_antd-for-vue 表单验证失效 自定义表单验证使表单非空验证失效(其他验证失效)...

    ## antd-for-vue 表单验证失效 自定义表单验证使表单非空验证失效(其他验证失效) ##### antd 的 表单校验方法包括 validateFields 和 validateField ...

  2. 我为什么还要造轮子?欠踹?Monk.UI表单美化插件诞生记!

    背景 目前市场上有很多表单美化的UI,做的都挺不错,但是他们都有一个共同点,那就是90%以上都是前端工程师开发的,导致我们引入这些UI的时候,很难和程序绑定.所以作为程序员的我,下了一个决定!我要自己 ...

  3. JavaScript/jQuery 表单美化插件小结

    Niceforms Niceforms是一款独立的表单美化工具,当前版本为2.0 官方主页:http://www.emblematiq.com/lab/niceforms/ 官方演示:http://w ...

  4. php jq 提交表单验证,jQuery EasyUI 表单 – 表单验证 | 菜鸟教程

    jQuery EasyUI 表单 - 表单验证 本教程将向您展示如何验证一个表单.easyui 框架提供一个 validatebox 插件来验证一个表单.在本教程中,我们将创建一个联系表单,并应用 v ...

  5. html表单验证案例,HTML5表单验证(4个实用的表单美化案例)

    multipart/form-data 在使用包含文件上传控件的表单时,必须使用 autocomplete="on" 自动补全功能 novalidate 不验证 placehold ...

  6. html表单模板属性,HTML5超酷响应式表单美化模板插件

    这是一款非常效果非常酷的HTML5超酷响应式表单美化效果插件.表单的整体效果使用扁平化风格,使用media queries来为各种屏幕创建响应式效果.在大屏幕上,整个表单分三列显示,当屏幕小到一定程度 ...

  7. elementui 嵌套表单验证_vue elementUI 表单嵌套验证的实例代码

    一:表单一级验证 element中from组件内表单验证通过使用el-form标签,绑定model和rules属性进行表单验证 简单的表单验证很简单,在prop内绑定验证属性,然后在rules对象内定 ...

  8. html修改表单样式,HTML 样式 表单

    HTML 的 style 属性 style 属性的作用: 提供了一种改变所有 HTML 元素的样式的通用方法. 样式是 HTML 4 引入的,它是一种新的首选的改变 HTML 元素样式的方式.通过 H ...

  9. java jquery提交表单_Jquery ajax提交表单几种方法

    在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$('#表单ID').serialize();就行了,下面我来介绍两个提交表单数据的方法. ...

  10. 用php实现一个简易的web表单生成器,PHP—Web表单生成器

    1.实例: 2. 需求分析 在项目的实际开发中,经常需要设计各种各样表单.直接编写HTML表单虽然简单,但修改.维护相对麻烦. 因此,可以利用PHP实现一个Web表单生成器,使其可以根据具体的需求定制 ...

最新文章

  1. python使用osgeo库_python中使用gdal,osgeo
  2. TI CC2541 BLE协议栈蓝牙MAC 地址
  3. 为treeview添加客户端事件
  4. OPC的数据访问方法分别有同步访问、异步访问和订阅式
  5. ITK:创建一个自定义颜色图
  6. 查看oracle连接数的消耗情况
  7. 耍了一下 UncaughtErrorEvents
  8. 爬虫--Scrapy-CrawlSpider基于CrawlSpide的分布式爬虫
  9. C#网络编程----使用UdpClient实现网络会议讨论(详解)
  10. 关于spring security的URL路径验证问题
  11. 一线顶级互联网公司offer的成功经验【转自IT面试】
  12. Exception raised: Traceback (most recent call last):
  13. 超简单的wf日记程序
  14. 几种实现数据扁平化的方法
  15. excel数据修约(四舍六入五成双)
  16. 灰鸽子--木马、后门实验
  17. Lingo学习笔记(二)——常用函数
  18. ABAP其他基本语法
  19. 使用约登指数寻找最佳ROC曲线阈值
  20. gitlab议题模板上传创建

热门文章

  1. 最新解决vscode中文乱码问题
  2. 从神话诗歌到奇幻科学的人类探索史·《月亮》·总篇(有配图)
  3. wps2019启用宏+excel批量打开网址
  4. 电脑硬件名称 中英文对照
  5. 南京工程学院《DSP技术及应用》期末试卷
  6. 多媒体计算机技术未来的发展方向,多媒体技术的发展现状及未来
  7. DIALOGBOXPARAMA
  8. 什么是tftp服务器? 如何搭建tftp服务器?
  9. IP数据包和ICMP数据包的结构
  10. 存量运营好工具:客户稳定度评分卡模型