首页
导航
博客
电子书
算法
众创
代码
随贴
关于我们
您好,欢迎来到码863代码分享网! 请
[登录]
/
[注册]
搜 索
标题:
*
140
字
TAG标签:
(用空格隔开)
30
字
恢复历史版本:
请选择分类
html
python
javascript
php
sql
c
c++
c#
java
plain
所有人可见
仅自己可见
编辑器:UEditor
编辑器:TinyMCE
编辑器:Editor.md
HTML转MD
HTML转MD2
<h2><span style="font-family: " helvetica="" microsoft="" font-size:="">验证通过与否除了跟validity接口下的属性相关外,还跟validationMessage是否有值有关系。只有当validity接口下的属性(customError除外)都为false并且validationMessage为空时才算验证通过。</span></h2><p><br/></p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:="">HTML5表单验证给前端人员带来了便利,但是在用户体验上存在一些缺陷,默认的提示对用户很不友好,无法准确的获取想要的信息。好在大牛们在接口设计的时候提供了setCustomValidilty方法可以自定义提示信息。这是一个好消息,但也存在一些弊端,需要让开人员做额外的一些处理才达到真正想要的目的。</p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:="">接下来通过以下示例来阐述方法的应用。</p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:=""><strong>未调用setCustomValidity()方法</strong></p><pre class="prettyprint prettyprinted" style="padding: 3px; font-family: Consolas, Menlo, Monaco, " lucida="" liberation="" dejavu="" sans="" bitstream="" vera="" courier="" margin-bottom:="" background-color:="" overflow:="" width:="" font-size:="" line-height:="" border-radius:=""> form test Check</pre><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:="">执行结果:</p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:="">A:未输入数据<br/><img alt="" class="alignnone size-full wp-image-3608" height="92" src="/ueditor/php/upload/image/20180606/1528221323587219.jpg" title="1336530769_26" width="251"/></p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:="">B:不匹配<br/><img alt="" class="alignnone size-full wp-image-3609" height="102" src="/ueditor/php/upload/image/20180606/1528221325853680.jpg" title="1336530790_16" width="278"/><br/>这两个结果都匹配了。但是不匹配这里的提示方案案与预想的不符合。</p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:=""><strong>通过调用setCustomValidity方法来优化提示文案</strong></p><pre class="prettyprint prettyprinted" style="padding: 3px; font-family: Consolas, Menlo, Monaco, " lucida="" liberation="" dejavu="" sans="" bitstream="" vera="" courier="" margin-bottom:="" background-color:="" overflow:="" width:="" font-size:="" line-height:="" border-radius:=""> form test Check</pre><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:="">执行结果:</p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:="">A:为空<br/><img alt="" class="alignnone size-full wp-image-3607" height="96" src="/ueditor/php/upload/image/20180606/1528221326721133.jpg" title="1336531076_33" width="243"/><br/>B:不合法<br/><img alt="" class="alignnone size-full wp-image-3610" height="89" src="/ueditor/php/upload/image/20180606/1528221328686366.jpg" title="1336531092_68" width="250"/><br/>C:合法<br/><img alt="" class="alignnone size-full wp-image-3611" height="101" src="/ueditor/php/upload/image/20180606/1528221330680068.jpg" title="1336531105_8" width="255"/></p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:="">从三个操作来看,调用了setCustomValidity方法后,原生的表单验证罗辑都返回false了。悲剧。</p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:="">再看看接口属性的变化<br/><strong>调用之前:</strong><br/>A)<br/><img alt="" class="alignnone size-full wp-image-3612" height="160" src="/ueditor/php/upload/image/20180606/1528221331429476.jpg" title="1336531622_37" width="317"/><br/>B)<br/><img alt="" class="alignnone size-full wp-image-3613" height="159" src="/ueditor/php/upload/image/20180606/1528221333736134.jpg" title="1336531668_55" width="366"/><br/>C)<br/><img alt="" class="alignnone size-full wp-image-3614" height="169" src="/ueditor/php/upload/image/20180606/1528221334780505.jpg" title="1336531785_56" width="237"/></p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:=""><strong>调用之后:</strong><br/>A)<br/><img alt="" class="alignnone size-full wp-image-3615" height="162" src="/ueditor/php/upload/image/20180606/1528221335971428.jpg" title="1336531871_90" width="295"/><br/>B)<br/><img alt="" class="alignnone size-full wp-image-3616" height="176" src="/ueditor/php/upload/image/20180606/1528221337109502.jpg" title="1336531922_37" width="333"/><br/>C)<br/><img alt="" class="alignnone size-full wp-image-3617" height="170" src="/ueditor/php/upload/image/20180606/1528221338102457.jpg" title="1336531977_93" width="315"/><br/>从上面的截图可以看到validationMessage没清空,valueMissing和patternMismatch都已经验证通了。</p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em; font-family: " helvetica="" microsoft="" font-size:="" white-space:=""><strong>总结一下:</strong><br/>从面上可以看出,验证通过与否除了跟validity接口下的属性相关外,还跟validationMessage是否有值有关系。只有当validity接口下的属性(customError除外)都为false并且validationMessage为空时才算验证通过。</p><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em;" helvetica="" microsoft="" font-size:="" white-space:=""><strong>优化后的代码:</strong></p><pre class="brush:html;toolbar:false"><!DOCTYPE html><html><head> <mata charset="utf-8"> <title>form test</title></head><body> <form name="test" action="." method="post"> <input type="text" required pattern="^\d{4}$" oninput="out(this)" placeholder="请输入代码" > <button type="submit">Check</button> </form><script type="text/javascript">function out(i){ var v = i.validity; if(true === v.valueMessing){ i.setCustomValidity("请填写些字段"); }else{ if(true === v.patternMismatch){ i.setCustomValidity("请输入4位数字的代码"); }else{ i.setCustomValidity(""); } }}</script></body></html></pre><p style="line-height: 1.6em; margin-top: 1em; margin-bottom: 1em;" helvetica="" microsoft="" font-size:="" white-space:=""><br/></p>
CopyRight 2002~2023 精通2100网 联系邮箱:qqtxt@163.com
版权所有:精通2100网
湘ICP备2023018646号-1
MYSQl共执行 4 个查询,用时 0.0020947456359863 秒,PHP脚本用时 0.004367 秒,占用内存 0.542 MB,Gzip 已启用