HTML5 Form - yexingxia/webfont GitHub Wiki
不如js的地方: 需要等到表单提交时才能进行校验,并且只显示第一个错误信息
没有值时显示,一旦有值就隐藏,适用于input(text, search, url, tel, email, password and number)、textarea
- IE<10不支持
- Safari<4 & Opera<11.5对textarea不支持
- 可以自定义样式,写法如下:
::-webkit-input-placeholder,
:-moz-placeholder /* Firefox 18- */,
::-moz-placeholder /* Firefox 19+ */,
:-ms-input-placeholder {
font-style:italic;
color: red;
background-color: yellow;
}
第一个有autofocus属性的input/textarea会获得焦点(safari除外,它是最后一个)
- IE<10 & iOS Safari不支持
- 检测是否支持
"autofocus" in document.createElement("input")
注意:
- 会导致页面滚动到autofocus的控件,使用时要明确控件位置
- 如果要用到fallback,确保尽快触发(DOM ready优于window.load),否则太慢会出现用户已经在页面做交互,而又被强行带离了原本位置
不允许用户输入超过指定数量的字符,粘贴超长会直接截断,适用于input(text, email, url, search, tel and password)、textarea
- IE<9和低版本FF不支持textarea
- 不影响placeholder的长度
- 如果预设的值超长了,会显示全,但是提交时会提示验证失败
设置最小、最大范围以及增减步长,超出不允许输入,适用于input(number, range, date/time)
- 彼此可以独立使用
- min和max本身也是一种校验
- step默认是1,也可以支持float值(step="any") 见Opera
- 如果没有设置value,range默认取min和max的中间值,number默认取0
- IE10, IE11, Android和iOS虽然没有GUI界面,但是仍然有校验功能
text, url, date/time.etc IE<10、Safari、iOS、Android不支持 range IE<10、Safari、FF、iOS、Android不支持 color IE<10、Safari、FF、IE、iOS、Android不支持
- 在input上指定list={datelist id},达到类似select和suggest的效果,并且根据输入自动缩小范围(Chrome, Opera and IE - 以输入开头, Firefox - 包含输入)
- 特殊:range、color、date/time
- 不支持fallback:隐藏
自动补全,适用于date, text, search, url, tel, email, password, number, range and color(不明所以)
- IE<11 & Android不支持
- 取值:"on"(default)/"off"
- 一般都是设置成off,避免安全问题
限制file input可以选择的文件类型
- 取值:audio/* , video/* , image/* , 其它有效的MIME类型
- IE<10 & Android & iOS<7不支持
- Android会让用户选择上传哪里的文件,如camera, microphone, gallery, file structure或其它, 忽略accept属性值. 其它浏览器可以通过如下代码达到同样效果:
<input type="file" accept="audio/*;capture=microphone">
<input type="file" accept="image/*;capture=camera">
<input type="file" accept="video/*;capture=camcorder">
可以填多个值,适用于input(file, email)
- IE<10 & iOS<7不支持
- email类型的值要用逗号分隔
非空限制,适用于text, search, url, tel, radio, checkbox, email, password, number, file, and the date/time(range和color本身有默认值,所以有没有都一样)此处和上面number默认取0似乎矛盾了
- IE<10 & Safari & iOS Safari & Opera Mini & Android Browser<4.4不支持
- 必须要有name属性?
- 支持:required自定义样式
?没生效
:required:after{
content: "*";
color: #f00;
}
http://stackoverflow.com/questions/22148080/an-invalid-form-control-with-name-is-not-focusable
给输入值提供正则校验,适用于input(text, search, url, tel, email, password)
- IE<10 & Safari & iOS & Android不支持
- 取值:正则表达式,必须完全匹配整个值(multiple的情况需要注意),默认前后有^和$
- 使用title属性来提示用户合法的格式,会出现在提示错误的气泡中
- 有用的正则
避免表单验证,适用于input(submit, image)和button
- IE<10 & Safari & iOS & Android不支持
- 主要用于当表单需要保存但不需要验证时
为表单指定多种action,适用于input(submit, image)和button
- IE<10不支持
- 会覆盖form上的action属性
为表单指定多种提交方式,适用于input(submit, image)和button
- IE<10不支持
- 取值:"get", "post"
- 会覆盖form上的method属性
为表单指定多种响应提交的context,适用于input(submit, image)和button
- IE<10不支持
- 取值:"_blank", "_self", "_parent", "_top"
- 会覆盖form上的target属性
为表单指定多种提交数据的编码方式,适用于input(submit, image)和button
- IE<10不支持
- 取值: "application/x-www-form-urlencoded"(default) - special chars in the URL to ASCII HEX values and spaces to '+' "multipart/form-data" - no encoding "text/plain" - spaces to +
- 会覆盖form上的enctype属性
###spellcheck属性 看不出效果?
###search 搜索
<input id="search1" type="search" list="suggest">
<datalist id="suggest" class="hide">
<option value="afengzai1">afengzai1</option>
<option value="fengzai2">fengzai2</option>
<option value="fengzai3">fengzai3</option>
</datalist>
- 输入值后右边会有个x
- results属性,加上这个属性,左侧会出现一个放大镜图标,(不论值是多少)
- autosave属性
- Chrome & Opera & Safari能显示特型,但只有Opera能显示值
- range可以垂直,如下
<input type="range" name="grade" orient="vertical"
style="width: 20px; height: 200px;
-webkit-appearance: slider-vertical;
writing-mode: bt-lr;">
取色
- IE & iOS不支持
- 取值:只支持6位十六进制的格式,默认值是#000000
实时显示所选值
- IE<10不支持
<form oninput="output.value = (val1.valueAsNumber || 0) * (val2.valueAsNumber || 0)" id=foo>
<input type=number name=val1> X
<input type=number name=val2> =
<output name=output for="val1 val2" form=foo>0</output>
</form>
- for属性:要加入计算的标签的id列表,多个用空格分隔
- Chrome & Opera能显示日历
量表
- IE & iOS不支持
- value属性(必填) - 当前有多大,取值范围min ~ max,超出范围的取两侧边界中更相近的那个,没有值则0或min
- min属性 - 最小值,默认是0
- max属性 - 最大值,默认是1
- low属性 - 低临界点,min ~ low 黄色
- high属性 - 高临界点,low ~ high 绿色; high ~ max 红色
- optimum属性 - 适宜临界点 没有样式
- 可以调整宽高
进度条
- IE<10 & iOS<7不支持
- max属性 - 总共多大
- value属性 - 当前有多大,取值范围0 ~ max,没有值则显示一直在动的动画效果(IE动画与其它不同)
- position属性 - 当前百分比,0.0 ~ 1.0之间的float数
- 可以调整宽
- 默认:根据type校验