HTML5表单:标记

这是关于HTML5网络表单的三部分系列文章的第一篇。 在介绍样式和客户端JavaScript验证API之前,我们将介绍本文的基本标记。 即使您已经熟悉表单,我还是建议您阅读此书-有许多新属性和陷阱!

HTML表单可能很平凡,但是对于大多数网站和应用程序来说,HTML表单是必不可少的。 在HTML4中,输入字段仅限于:

  • input type="text"
  • input type="checkbox"
  • input type="radio"
  • input type="password"
  • input type="hidden" -用户无法查看的数据
  • input type="file" -用于上传
  • textarea更长的文本输入
  • select —用于下拉列表
  • button -通常用于提交表单,尽管也可以使用input type="submit"input type="image"

也:

  • CSS样式的可能性是有限的,
  • 必须使用代码开发自定义控件(例如日期和颜色选择器),并且
  • 客户端验证需要JavaScript。

其他HTML5输入类型

大量的新input类型已被引入。 这些提供本机输入帮助和验证,而无需任何JavaScript代码…

类型 描述
email 输入电子邮件地址
tel 输入电话号码-无需执行严格的语法,但会删除换行符
url 输入网址
search 自动删除带有换行符的搜索字段
number 浮点数
range 用于输入近似值的控件,通常由滑块表示
date 输入日期,月份和年份
datetime 根据当前UTC时区输入日,月,年,小时,分钟,秒和微秒
datetime-local 输入没有时区的日期和时间
month 输入没有时区的月份和年份
week 输入没有时区的星期数
time 输入没有时区的时间
color 指定颜色

输入属性

除非另有说明,否则输入字段可以具有以下任何特定于表单的属性。 有一些是布尔属性,也就是说,它们不需要值,例如

<input type="email" name="email" required />

尽管您可以添加它们(如果您希望使用更严格的类似XHTML的语法),例如

<input type="email" name="email" required="required" />

属性 描述
name 输入字段名称
value 初始值
checked 检查checkboxradio输入
maxlength 输入的字符串的最大长度。 这也可以应用于HTML5中的textarea字段
minlength 输入字符串的最小长度。 有记录,但是在撰写本文时,浏览器支持不佳,并且该属性导致HTML验证程序出错。 另一种选择是pattern=".{3,}" ,它至少要强制三个字符。
placeholder 输入框中显示的细微文字提示
autofocus 页面加载时将焦点设置到此(非隐藏)字段
required 表示必须输入一个值
pattern 确保值符合正则表达式
min 允许的最小值(数字和日期类型)
max 允许的最大值(数字和日期类型)
step 价值粒度。 例如, input type="number" min="10" max="19" step="2"仅允许值10、12、14、16或18。
autocomplete 向浏览器提供自动完成提示,例如“计费电子邮件”,或者可以设置为“开”或“关”以相应地启用和禁用
inputmode 指定输入机制。 最有用的选项:
  • verbatim -非散文内容,例如用户名
  • latin -拉丁语脚本,例如搜索字段
  • latin-name -名称,即首字母大写
  • latin-prose -散文内容,例如消息,推文等
  • numeric —数字输入,其中numberrange不合适,例如信用卡号
size textpassword输入的字符大小, emailtelurlsearch输入的像素大小。 最好避免使用,因为您应该使用CSS设置字段样式。
rows 文本行数(仅限textarea
cols 文本列数(仅限textarea
list 指向一组数据列表选项
spellcheck 设置为true或false以启用或禁用拼写检查
form 此输入所属表单的ID。 通常,输入应嵌套在form ,但是此属性允许在页面上的任何位置定义输入
formaction 指定一个URI,以在提交时覆盖form操作(仅提交按钮/图像)
formmethod 指定GET或POST以在提交时覆盖form方法(仅提交按钮/图像)
formenctype 指定提交时的内容类型(仅在提交按钮/图像上使用text/plainmultipart/form-dataapplication/x-www-form-urlencoded
formtarget 指定提交时覆盖form目标的目标窗口/框架(仅提交按钮/图像)
readonly 尽管输入值将被验证并提交,但无法更改
disabled 禁用输入-不会进行验证,也不会提交数据

请注意, date字段必须始终将YYYY-MM-DD用于valueminmax属性。

以下示例请求以@ mysite.com结尾且在页面加载时具有焦点的强制性电子邮件:

<input
  type="email"
  name="login"
  pattern="@mysite\.com$"
  autocomplete="email"
  autofocus
  required />

资料清单

数据列表包含一组适用于任何类型input选项,例如

<input type="text" name="browser" list="browsers" />

<datalist id="browsers">
  <option value="Chrome" />
  <option value="Firefox" />
  <option value="Internet Explorer" />
  <option value="Safari" />
  <option value="Opera" />
</datalist>

如果支持datalist ,则在您开始键入时浏览器将显示自动完成选项。 如果双击控件或单击向下箭头(如果显示),通常会显示整个列表。 与标准select下拉菜单不同,用户可以随意覆盖这些选择并输入自己的值。

可以设置值和文本,例如标准选择选项,例如

<option value="IE">Internet Explorer</option>

但请注意,实现方式有所不同。 例如,Firefox自动完成文本本身(Internet Explorer),而Chrome则首选值(IE)并以灰色显示文本:

资料清单

如果您想通过Ajax检索选项,则可以用JavaScript填充数据列表。

禁用验证

可以通过在form元素上设置novalidate属性来禁用整个表单的验证。 或者,您可以在表单的“提交”按钮/图像上设置formnovalidate属性。

还要记住,设置输入的disabled属性将阻止对该字段的验证。

输出栏位

在我们主要讨论输入类型时,HTML5还提供了只读输出选项:

  • output -计算或用户操作的结果
  • progress —进度条( valuemax属性定义状态)
  • meter —一种刻度,可以根据为属性value minmaxlowhighoptimum设置的值在绿色,琥珀色和红色之间切换

分隔和标记输入

whatwg.org表单规范指出:

表单的每个部分都被视为一个段落,通常使用<p>元素将其与其他部分分开

有趣。 我通常使用div尽管我从语义的角度怀疑它是否重要。 p标记较短,尽管您可能需要应用一个类来修改边距。

更重要的是,您应该在输入本身周围或旁边使用标签元素,并使用for属性来声明输入的ID,例如

<p>
  <p>
  <label for="firstname">First name</label>
  <input type="text" id="firstname" name="firstname" placeholder="first name" required maxlength="20" />
</p>
 
<p>
  <label for="lastname">Last name</label>
  <input type="text" id="lastname" name="lastname" placeholder="last name" required maxlength="20" />
</p>
 
<p>
  <label for="email">Email address</label>
  <input type="email" id="email" name="email" placeholder="your@email.address" required maxlength="50" />
</p>
 
<p>
  <label>
    <input type="checkbox" name="newsletter" />
    Sign up for our newsletter
  </label>
</p>

没有标准控件

没有特定的界面指南供浏览器供应商遵循。 这是有意的:典型的桌面鼠标控制的日期选择器在移动设备上可能太小,因此供应商可以实现基于触摸的替代方法。

浏览器支持

并非所有浏览器都支持每种输入类型和属性。 通常,大多数来自IE10 +的现代浏览器都包含诸如电子邮件和号码之类的基础知识。 但是,在撰写本文时,Webkit和Blink浏览器仅支持日期类型。

当特定类型时,浏览器将还原为标准text输入,而在不支持这些值时,将忽略属性。

始终使用正确的类型!

为您请求的数据使用正确的输入类型很重要。 这似乎很明显,但是当您尝试使用标准文本输入时,您会遇到一些情况。

考虑日期。 支持是不完整的,这会导致实现问题:

  1. 无论日期选择器在您的语言环境中如何显示,标准date输入始终以YYYY-MM-DD格式返回日期。
  2. IE和Firefox将退回到标准text输入,但是您的用户可能希望以US MM-DD-YYYY或欧洲DD-MM-YYYY格式输入值。
  3. JavaScript日期选择器(如jQuery UI中的日期选择器)使您可以定义自定义格式-甚至是YYYY-MM-DD以确保一致性-但您不能保证将启用JavaScript。

最简单的办法是放弃HTML5 date输入,恢复到text和实现自己的日期控件。 别。 您将永远不会创建可在所有设备上以所有屏幕分辨率在所有设备上使用,支持键盘,鼠标和触摸输入并在禁用JavaScript时继续运行的自定义日期选择器。 特别是,移动浏览器通常领先于台式机,并实现良好的触摸屏控制。

HTML5输入类型是未来。 使用它们,并在需要良好跨浏览器支持的情况下(如有必要)添加JavaScript polyfills。 但是请记住...

验证服务器端

无法保证浏览器验证。 即使您强迫所有人使用最新版本的Chrome进行访问,也无法阻止:

  • 浏览器错误或JavaScript错误导致数据无效
  • 用户使用浏览器工具更改HTML或脚本
  • 来自您无法控制的系统的提交,或
  • 浏览器和服务器之间的数据拦截(一定是通过HTTP)。

客户端验证永远不会,也永远不会替代服务器端验证。 验证服务器上的用户数据至关重要。 在客户端上,这是一个不错的选择

最后,请记住日期可能以YYYY-MM-DD或您指定给用户的任何格式(MM-DD-YYYY,DD-MM-YYYY等)接收。检查前四个字符中的数字或使用母语/框架日期解析方法(如有必要)。

我们在本文中介绍了很多内容。 在下一部分中,我们将讨论与表单相关的CSS属性。

From: https://www.sitepoint.com/html5-forms-markup/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值