# 表单元素

9_0_表单内容.png

# form 基本表单

表单是HTML中获取用户输入的手段。对于web应用系统极其重要。

# 局部属性

action, method, enctype, name, accept-charset, target, novalidate, audocomplete,其中novalidate和autocomplete属性是HTML5新增的。

form {
  display: block; margin-top: 0;
}

# input

输入,局部属性:name,disabled, form, type;虚元素;HTML5新增了一个type。习惯样式取决于type属性。

# button

按钮,局部属性:name,disabled,form,type,value,autofocus等。

<form method="get">
  <input name="fave" />
  <button>Submit fave</button>
</form>

9_1_baseform.png

# 配置表单(表单属性)

# action属性(表单提交地址)

action表示提交的地址,如果是相对URL,base元素设置的地址会影响提交的地址。

<!-- 绝对地址 -->
<form method="post" action="http://zuo11.com:8080/form">
</form>
<!-- 相对地址 -->
<base href="http://zuo11.com:8080" />
<form method="post" action="/form">
</form>

# method属性(http请求方法)

http请求方法,get、post

# enctype属性(数据编码)

enctype属性指定了发送数据采用的编码方式,enctype属性允许的值:

  • application/x-www-form-urlencoded 不能用来将文件上传到服务器,发送数据如下:
fave=Apples&name=guoqzuo
  • multipart/form-data 用于上传文件到服务器
// 如果xhr提交数据为formdata,默认编码即为 multipart/form-data
var data = new FormData() 
data.append('file', files[0])

9_2_multipart_formdata.png

  • text/plain,因浏览器而异,chrome会当做application/x-www-form-urlencoded处理。

# autocomplete (input自动填充)

浏览器可以记住用户输入表单的数据,再次遇到类似的数据,会自动填充。autocomplete有两个值,off 和 on。默认为on表示允许浏览器自动填充。

<!-- off 禁止显示输入历史记录 -->
<input name="fave" aotocomplete="off"/>

9_3_autocomplete.png

# target (制定表单显示位置)

target如果为_blank,将浏览器返回的信息显示在新窗口, 默认为_self,在当前窗口

# name (表单名称)

name属性可以用来为表单设置一个独一无二的标识符,以便dom访问。

document.forms['formtest'] // 获取name属性为formtest的form

# label (表单说明)

局部属性:for,form,for指向一个id,点击时,会focus对应的input。form属性为HTML5新增。默认样式 label {cursor: default; }

<body>
  <form method="get">
    <p><label for="fave">Fruit: <input id="fave" name="fave"/></label></p>
    <p><label for="name">Name: <input id="name" name="name"/></label></p>
    <button>Submit fave</button>
  </form>
</body>

9_4_label.png

# autofocus (自动聚焦input)

autofocus不必手动点击到输入框。就可以将焦点自动聚焦到input。autofocus为布尔属性。只能用于表单的一个input元素上。如果有几个元素设置了autofocus属性,会自动聚焦到其中的最后一个元素。

# disabled (禁用单个input)

<p><label for="fave">Fruit: <input id="fave" name="fave" disabled value="apple"/></label></p>

9_5_disabled.png

# fieldset (表单元素编组)

局部属性:name,form,disabled,默认样式

fieldset {
  display: block;
  margin: 0 2px;
  padding: 0.35em 0.75em 0.625em;
  border: 2px groove;
}

实例:

<body>
  <form method="get">
    <fieldset>
      <p><label for="fave">Fruit: <input id="fave" name="fave" /></label></p>
      <p><label for="name">Name: <input id="name" name="name"/></label></p>
    </fieldset>
    <fieldset>
      <p><label for="fave1">#1: <input id="fave1" name="fave1" /></label></p>
      <p><label for="fave2">#2: <input id="fave2" name="fave2"/></label></p>
    </fieldset>
    <button>Submit fave</button>
  </form>
</body>

9_6_fieldset.png

# disabled属性 (禁用整组表单)

<!-- 禁用一组input -->
<fieldset disabled>

# legend (表单分组说明)

fieldset元素用来分组,lefend用来提供相关说明

<form method="get">
  <fieldset>
    <legend>Enter your details</legend>
    <p><label for="fave">Fruit: <input id="fave" name="fave" /></label></p>
    <p><label for="name">Name: <input id="name" name="name"/></label></p>
  </fieldset>
  <fieldset>
    <legend>Vote for your two favorite fruits</legend>
    <p><label for="fave1">#1: <input id="fave1" name="fave1" /></label></p>
    <p><label for="fave2">#2: <input id="fave2" name="fave2"/></label></p>
  </fieldset>
  <button>Submit fave</button>
</form>

9_7_legend.png

# button

type属性

  • submit (提交表单),当button为submit时,会新增一些额外属性

9_8_submit_type额外属性.png

<button type="submit">submit</button>
  • reset (重置表单)
<button type="reset">reset</button>
  • button (一般button元素)
<button type="button">press this button</button>

# 表单外的元素

使用input、button的form属性,将form外部的input或button,关联到form表单。

<body>
  <form id="voteform" method="get" name="formtest">
    <p><label for="fave">Fruit: <input id="fave" name="fave" /></label></p>
    <p><label for="name">Name: <input id="name" name="name"/></label></p>
  </form>
  <p><label for="age">age: <input id="age" name="age" form="voteform"/></label></p>
  <button type="submit" form="voteform">Submit</button>
  <button type="reset" form="voteform">Reset</button>
</body>
上次更新: 2020/10/29 22:59:19