HTML5表单详解
<h2>input</h2><p>1、<strong>type = “file”</strong>时,form标签要添加 <strong>enctype = "multipart/form-data"</strong></p>
<p> </p>
<p>2、含有<strong>required</strong>时,但是form有<strong>novalidate</strong>,那么required不会生效</p>
<p>3、含有<strong>required</strong>时,submit提交按钮含有<strong>formnovalidate</strong>属性,那么reuired不会生效</p>
<p> </p>
<p>4、含有<strong>autofocus</strong>时,刷新页面时自动聚焦到该文本框上</p>
<p>5、含有<strong>autocomplete</strong>时,会记住之前提交的记录,利与快速填写</p>
<p>6、含有<strong>pattern</strong>属性时,要符合pattern的正则表达式才能提交。如 pattern = "$",以abc任意一个字母结尾</p>
<p> </p>
<p>7、<strong>lable中的for</strong>,对应input的id值。当鼠标点击lable标签时,焦点就会在对应的input里面。(最佳搭配还是与radio、checkbox)</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="text"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">=""</span><span style="color: rgba(255, 0, 0, 1)"> id</span><span style="color: rgba(0, 0, 255, 1)">="text"</span> <span style="color: rgba(0, 0, 255, 1)">/><</span><span style="color: rgba(128, 0, 0, 1)">label </span><span style="color: rgba(255, 0, 0, 1)">for</span><span style="color: rgba(0, 0, 255, 1)">="text"</span><span style="color: rgba(0, 0, 255, 1)">></span>一个label,配文本框<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p> </p>
<p>8、限制输入框最大长度:maxlength = "3",限制输入框最小长度:minlength = "2"(效果不明显)。明显效果用:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="number"</span><span style="color: rgba(255, 0, 0, 1)"> id</span><span style="color: rgba(0, 0, 255, 1)">="bb"</span><span style="color: rgba(255, 0, 0, 1)"> oninput</span><span style="color: rgba(0, 0, 255, 1)">="sub(this,5)"</span> <span style="color: rgba(0, 0, 255, 1)">/> <!-- 限制最大长度为5 --><br><!-- type可以各种各样 --></span></pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> sub(obj,length){
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(obj.value.length><span style="color: rgba(0, 0, 0, 1)">length){
obj.value </span>= obj.value.substr(0<span style="color: rgba(0, 0, 0, 1)">,length);
}
}</span></pre>
</div>
<p> </p>
<p>9、去除 type="search" 的默认小叉,</p>
<div class="cnblogs_code">
<pre>input ::webkit-search-cancel-<span style="color: rgba(0, 0, 0, 1)">button{
</span>-webkit-appearance:none; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">去除默认小叉</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">若有需要可以自定义自己的小叉图标,如:</span>
<span style="color: rgba(0, 0, 0, 1)"> width:15px;
height:15px;
background</span>-<span style="color: rgba(0, 0, 0, 1)">color:red;
}</span></pre>
</div>
<p> </p>
<p> </p>
<p>10、type="number"时,保留两位小数用,step="0.01"。(若不设置,提交时自动去除小数点后的数)</p>
<p>11、type="number"时,点击右边的上下键,一次跳5,step="5"。(若不设置,默认跳1)</p>
<p> </p>
<p>12、去除type="number"的上下键,用:</p>
<div class="cnblogs_code">
<pre>input::-webkit-inner-spin-<span style="color: rgba(0, 0, 0, 1)">button,
input::-webkit-outer-spin-<span style="color: rgba(0, 0, 0, 1)">button{
</span>-webkit-<span style="color: rgba(0, 0, 0, 1)">appearance:none;
margin:</span>0<span style="color: rgba(0, 0, 0, 1)">;
}</span></pre>
</div>
<p> </p>
<h2>HTML5约束验证API(validity)</h2>
<p>//每一个input都有与之对应的validity对象,如:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="text"</span><span style="color: rgba(255, 0, 0, 1)"> id</span><span style="color: rgba(0, 0, 255, 1)">="tt"</span><span style="color: rgba(255, 0, 0, 1)"> required </span><span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre>console.log(tt.validity); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">有id名的可以直接用id名使用,但兼容性没那么好</span></pre>
</div>
<p> </p>
<p> </p>
<p>//打印出来的validity,如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/1680452/202004/1680452-20200412093039935-110562912.png"></p>
<p> </p>
<p>//只要input设置了某些属性,与之对应的validity方法就会为true</p>
<p> </p>
<h2>HTML5约束验证API(checkValidity)</h2>
<p>//每个input都有checkValidity,只是检查规则随着type的不同而不同</p>
<p>//检查某类型是否符合规则,符合返回true,不符合返回false</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="email"</span><span style="color: rgba(255, 0, 0, 1)"> id</span><span style="color: rgba(0, 0, 255, 1)">="emails"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)">(emails.checkValidity()){
console.log(</span>"符合规则"<span style="color: rgba(0, 0, 0, 1)">);
}</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">{
console.log(</span>"不符合规则"<span style="color: rgba(0, 0, 0, 1)">);
}</span></pre>
</div>
<p> </p>
<p> </p>
<h2>HTML5约束验证API(setCustomvalidity)</h2>
<p>//主要是更改input的required的提示信息,如:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="text"</span><span style="color: rgba(255, 0, 0, 1)"> pattern</span><span style="color: rgba(0, 0, 255, 1)">="^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"</span><span style="color: rgba(255, 0, 0, 1)"> required oninput</span><span style="color: rgba(0, 0, 255, 1)">="tishi(this)"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="submit"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> tishi(obj){
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)">(obj.validity.valueMissing){
obj.setCustomValidity(</span>"这里不能为空空空。。。"<span style="color: rgba(0, 0, 0, 1)">);
}</span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)">(obj.validity.patternMismatch){
obj.setCustomValidity(</span>"必须符合邮箱规则则则。。。"<span style="color: rgba(0, 0, 0, 1)">);
}</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">{
obj.setCustomValidity(</span>""<span style="color: rgba(0, 0, 0, 1)">);
}
}</span></pre>
</div>
<p> </p>
<h2>HTML5自带验证美化</h2>
<h3>:required(选择必填项)</h3>
<div class="cnblogs_code">
<pre>input:reqrired{ <span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 选择input的必填项 </span><span style="color: rgba(0, 128, 0, 1)">--></span><span style="color: rgba(0, 0, 0, 1)">
border-right:3px solid red;
}</span></pre>
</div>
<p> </p>
<h3>:optional(选择选填项)</h3>
<div class="cnblogs_code">
<pre>textarea:optional{ <span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 指textarea没有required的那一项 </span><span style="color: rgba(0, 128, 0, 1)">--></span><span style="color: rgba(0, 0, 0, 1)">
border-right:3px solid grey;
}</span></pre>
</div>
<p> </p>
<h3>去除默认的输入状态边框</h3>
<div class="cnblogs_code">
<pre>input:focus{<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 去除input表单,光标进去后,默认的边框效果 </span><span style="color: rgba(0, 128, 0, 1)">--></span><span style="color: rgba(0, 0, 0, 1)">
outline:none;
}</span></pre>
</div>
<p> </p>
<h3>自定义输入状态边框</h3>
<div class="cnblogs_code">
<pre>input:required:focus{ <span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 设置输入状态的边框 </span><span style="color: rgba(0, 128, 0, 1)">--></span><span style="color: rgba(0, 0, 0, 1)">
box-shadow: 0 0 3px 1px red;
}</span></pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre>input:optional:focus{ <span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 设置输入状态的边框 </span><span style="color: rgba(0, 128, 0, 1)">--></span><span style="color: rgba(0, 0, 0, 1)">
box-shadow: 0 0 3px 1px grey;
}</span></pre>
</div>
<h3>:valid(符合输入规则)</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="text"</span><span style="color: rgba(255, 0, 0, 1)"> pattern</span><span style="color: rgba(0, 0, 255, 1)">="^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"</span><span style="color: rgba(255, 0, 0, 1)"> required </span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="submit"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 符合input的xx类型的规则时, </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
input:valid</span>~label::after{ <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">获取同父级下面的lable</span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
content: </span>"ok符合规则"<span style="color: rgba(0, 0, 0, 1)">;
}</span></pre>
</div>
<p> </p>
<h3>:invalid(不符合输入规则)</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="email"</span><span style="color: rgba(255, 0, 0, 1)"> required </span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="submit"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 不符合input的xx类型的规则时, </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
input:invalid</span>~label::after{ <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">获取同父级下面的lable</span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
content: </span>"暂时不符合规则"<span style="color: rgba(0, 0, 0, 1)">;
}</span></pre>
</div>
<h3>修改setCustomValidity的默认气泡</h3>
<p>......</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/jayden-qiu/p/12682916.html
頁:
[1]