在窗体上提交输入的验证需要花费大量的时间来构建Web表单。当涉及到填写Web表单上的信息时,即使是最熟悉Web的用户也可以并且都会犯错。当用户点击页面上的提交按钮时,可能会导致不完整或不准确的数据被提交上去。
为了避免输入出错,开发者需要在加工信息前先进行验证。验证是在接受输入信息时最好的做法。把数据截止在门外越早越好。
验证在用户提交表单时,通过一个服务器端执行来完成的。在这种类型的验证里,用户提供的数据先被提交给服务器,服务器处理之后如果判定输入数据不正确或不完整,就会抛出一个相应的错误信息。
随着JavaScript使用的越来越多,浏览器已经对通过专门的验证库对客户端验证提供支持了。
HTML5背后的智囊团们意识到了Web开发者需要对表单信息验证提供支持,然后就内置了对验证的支持,并引进了在客户端验证的支持,以将输入错误消灭于萌芽状态。
通过HTML5表单里的客户端验证,用户不需要等所有的输入都完成并提交信息给服务器后,才能分辨出哪些是出错信息。实际上,标记元素能指出那些信息不是必填的,这个逻辑在提交按钮发送数据给远程服务器之前就已经开始执行了。
让我们来看几个支持客户端验证的属性吧。
required’
required属性能被指定用于任何输入标记元素来注释需要这些的地方。
一个简单的声明如下所示:
<!DOCTYPE html><br>
<html><br>
<head><br>
<style><br>
textarea:required:invalid, input:required:invalid {<br>
background-color: lightyellow;<br>
}<br>
</style><br>
</head><br>
<body><br>
<header><br>
<h1>Validation demo</h1><br>
<p>Demo showing HTML5 validation</p><br>
</header><br>
<footer><br>
<h1></h1><br>
<p>HTML Goodies</p><br>
</footer><br>
<form id="myform" action="#"><br>
<input id="name" required><br><br>
<input id="phone"><br><br>
<input id="zip" required><br><br>
<input type="submit"><br>
</form><br>
</body><br>
</html>?
当上面的HTML在现代浏览器里被提出来时,你可以看到文本框有一个不同的阴影(这是我们为请求的元素指定的风格)。当用户跳过必填字段(通过点击它,然后并没有输入就到下一步),输入框会变成周围围绕红色边框的效果样式。
通过使用客户端验证必填字段,这样的造型有助于与用户沟通。
当表单被提交时(用户点击提交按钮),HTML5验证就开始执行了。但这个发生时,浏览器开始通过必填输入的列表来提示是否缺少要求的输入信息。
有时候并没有必要去验证,在这种情况下,我们可以设置窗体上的“movalidate”属性。
例如,下面的代码就没有让客户端验证规则启动:
<!DOCTYPE html><br>
<html><br>
<head><br>
<style><br>
textarea:required:invalid, input:required:invalid {<br>
background-color: lightyellow;<br>
}<br>
</style><br>
</head><br>
<body><br>
<header><br>
<h1>Validation demo</h1><br>
<p>Demo showing HTML5 validation</p><br>
</header><br>
<footer><br>
<h1></h1><br>
<p>HTML Goodies</p><br>
</footer><br>
<form id="myform" action="#" novalidate><br>
<input id="name" required><br><br>
<input id="phone"><br><br>
<input id="zip" required><br><br>
<input type="submit"><br>
</form><br>
</body><br>
</html>?
如果你只想在某个按钮被按下的时候才跳过验证,你可以在提交输入类型上指定“formnovalidate”属性:
<!DOCTYPE html><br> <html><br> <head><br> <style><br> textarea:required:invalid, input:required:invalid {<br> background-color: lightyellow;<br> }<br> </style><br> </head><br> <body><br> <header><br> <h1>Validation demo</h1><br> <p>Demo showing HTML5 validation</p><br> </header><br> <footer><br> <h1></h1><br> <p>HTML Goodies</p><br> </footer><br> <form id="myform" action="#" ><br> <input id="name" required><br><br> <input id="phone"><br><br> <input id="zip" required><br><br> <input id="button1" type="submit" ><br> <input id="button2" type="submit" formnovalidate><br> </form><br> </body><br> </html>?当我们点击第一个按钮时,我们看到验证规则起作用了,但当我们点击第二个按钮时,验证规则就没有了。
本文中,我们学到了HTML5验证是怎么工作的,希望你会发现这点是有用的。