# form 表单

作用

  • 提供可视化的输入控件
  • 收集用户输入的信息 并提交请求给服务器

TIP

总结
form 自带提交请求收集数据的功能
ajax提交请求 需要自己去收集数据 使用ajax 不要使用 form

# from 组成

前端使用的接口 需要后台开发者先完成
前端开发人员需要等待后端开发人员完成接口才能进行编码等待

前段 提供表单控件 与用户交互的可视化控件 接口/user_login
后端 后台的接口对提交的数据进行处理

服务器开发人员 写接口 逻辑 连数据库

# form 表单的使用

<form action="接口url" method="提交的方法"><form>
<!--
action
  定义表单提交时发送的动作(向那个url发送)
	没有值默认发送给本页面

method
  get 默认值  特点 明文提交  提交的内容会显示到地址上
    get 提交的数据 有大小限制  最大2kb
      使用时机 向服务器要数据的时候使用
  ​    
  post 特点 隐式提交 提交的内容会显示到地址栏
    post提交数据没有大小限制
    使用时机 传递数据给服务器的时候使用
-->

# 其他方法---使用form表单 目前不许使用delete,put option

delete put option ---ajax 才能使用

# enctype

作用

指定表单数据的编码方式
允许将什么样的数据提交给服务器

取值

text/plain            允许提交普通字符给服务器 

multipart/form-data   允许提交文件给服务器

必背 application/x-www-form-urlencoded

允许提交 任意字符给服务器(文件不能为空)

# 表单控件 在form 表单中能够与用户进行交互的可视化控件

# 分类

input     标签   基础9中   h5 新标签 10中
textarea  多行文本域
select 和 option 下拉选择框  

# input 元素

属性

<input type="" name="" value="" disabled>
<!-- 
  type      执行input元素的类型
  name      为控件定义名称  把名称提供给服务器端时候用  如果form表单想提交数据必须写name属性
  value     控件的值 传递给服务器的值	
  disabled  禁用 
-->

# 文本和密码框

属性

<input type="passwoad" maxlength="16" placeholder="请输入密码">
<!-- 
  maxlength    最大长度      readonly 只读 无值属性 可提交
  placeholder  占位符提示符    
-->

# 按钮

<button type="button">Click Me!</button>
<!--
  submit  将表单数据收集整理发送服务器
  reset  将当前表单恢复到初始状态
  button 无功能  配合事件调用JS代码使用
  附加知识点  h5
  button  代替 submit 
-->

# 单选/复选 name 分组使用

<input type="radio" name="sex" value="male" checked><br>
<input type="radio" name="sex" value="female"><!--
radio      单选按钮必须有Value才能使用提交数据
checked    默认选中
checkbox   多选  
必须有Value 才能向服务器提交数据
-->

<!-- 多选 -->
<input type="checkbox" name="vehicle" value="Bike">苹果
<input type="checkbox" name="vehicle" value="Car">香蕉

<!-- 
  隐藏域   hidden   用户不可见
  想把数据提交给服务器 但是不想展示给用户看   数据放入隐藏域 
-->

<input type="hidden" name="uid"/>

# 文件选择框 上传文件使用

<input type="file">

<!-- 注意 使用文件选择框需要保证form属性 -->

method="post"
enctype="multipart/form-data"

<!-- 属性 multiple  多重 无值属性  可配合多选文件 -->

# 多行文本框

<textarea cols="" row="">内容</textarea> 

<!-- 
  允许录入多行文本
  cols   rows  根据计算机硬件不同   不同展示 不准确
-->

# 下拉选项

<select>
  <option value ="volvo">Volvo</option>
  <option value ="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

<!--
如果option 没有 value 属性 n 那么提交的 select 的 value 就是选中的 option 的内容
有 value 选择 option 的 value

属性 
  size ="4"  size>1 变成滚动选择框2
  multiple 滚动选择框 可实现多选 
-->

# 其他元素

<!-- lable  替代form  中 span    进行input的关联   -->
<input  id="r" type="radio"  name="gender">
<label for="r">不透露</label>

<!--
控件分组
  fieldset 包含线
legend 基本信息
-->

# 浮动框架

在一个html中引入其他html文件

<iframe src="/index.html"></iframe>

<!-- 
  标准属性
  class, contenteditable, contextmenu, dir, draggable, id, irrelevant, 
  lang, ref, registrationmark, tabindex, template, title
-->

<!--
  src               引入路径  
  frameborder       框架边框
  scrolling="no"    设置滚动条
-->

实例 内联框架 本例演示如何创建内联框架(HTML 页中的框架)

# 新表单元素

<input type="email"  name="uemail">

<!--
有@符号 @前后有内容 

正则进行判定
  1 必须有@和.
  2 @不能是第一位
  3 .不能是最后一位
  4 @和.之间有内容
-->

# 搜索类型

<input type="search">  <!-- 快速清除 -->

<!-- 
  url 类型

  type="url"    		type="tel"
  验证 http://开头      	移动设备使用时会弹出虚拟键盘
-->

# 数字类型

<input type="number" max min step="步长">

# 范围类型

type range      max       min       step步长

# 颜色类型

<input type="color">

# 日期类型 月份类型 周类型

<input type="date month week">

<input type="date">
<input type="month">
<input type="week">