H5表单

H5新增表单属性

form属性

以前,表单内的从属元素必须书写在表单内部。但在H5中可以把表单内的从属元素书写在任何地方,然后给该元素指定一个form属性,属性值为该表单的id,这样就可以声明该元素从属于指定表单了。

<form id="testform">
    <input type="text">
</form>
<input type="text" form="testform">

placeholder属性

placeholder是指当前文本框处于未输入状态时文本框中显示的输入提示。

<input type="text" placeholder="请输入账号">

autofocus属性

指定控件自动获得焦点。一个页面上只能有一个控件具有该属性。

<input type="text" autofocus>

表单的input类型

对于不支持新增input元素的浏览器来说,统一将这些input元素视为text类型。另外, H5中也没有规定这些元素在各浏览器中的外观形式 , 所以同样的input元素在不同的浏览器中可 能会有不同的外观。

search类型

search类型的input元素用于输入搜索关键词的文本框。search类型与普通text类型的input仅在外观上有区别。search类型类型的文本框外观可以用css样式进行改写。

iniput[type="search"]{ -webkit-appearance: textfield; }

email类型

email类型的input元素是一种专门用来输入email地址的文本框。
提交时如果该文本框中内容不是email地址格式的文字则不允许提交,但是它并不检查该email地址是否存在。提交时该文本框可以为空,可以通过加上required属性指定必填。
email类型的文本框具有一个multiple属性。它允许在该文本框中输入一串以逗号分隔的email地址。当然,并不强制要求用户输入该email地址列表。

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

number类型

number类型的input元素是一种用来输入数字的文本框。提交时会检查内容是否为数字。它有min、maxstep属性。

<input name="number1" type="number" step="5" min="10" max="100" value="25">

range类型

range类型的input元素是一种只允许输入一段范围内数值的文本框。
它有minmax属性,可以设定最小值和最大值(默认是0和100),它还有step属性,可以指定每次拖动的步幅。

<input name="range" type="range" step="5" min="0" max="100" value="10">
Chrome浏览器下range类型文本框

tel类型

tel类型的input元素是一种专门用来输入电话号码的文本框。
它没有特殊的检验规则,不强制输入数字,因为许多电话号码带有其他文字(如86-8688888)。但可以通过pattern属性来指定对于输入的电话号码的格式的验证。

<input type="tel">

url类型

url类型的input元素是一种专门用来输入url地址的文本框。提交时如果该文本框中的内容不是url地址格式的文字,则不允许提交。

<input name="url" type="url" value="http://www.baidu.com">

date类型

date类型的input元素以日历的形式方便用户输入。

<input name="date1" type="date" value="2010-10-02">

time类型

time类型的input元素是一种专门用来输入时间的文本框,并且在提交时会对输入时间的有效性进行检查。它的外观取决于浏览器,可能是简单的文本框,只在提交时检查是否在其中输入了有效的时间,也可能以时钟形式出现,还可以携带时区。

<input name="time1" type="time" value="10:00"> 

datetime类型

datetime类型的input元素是一种专门用来输入UTC日期和时间的文本框,并且在提交时会对输入的日期和时间进行有效性检查。

<input name="datetime1" type="datetime">

datetime-Iocal类型

datetime-Iocal类型的input元素是一种专门用来输入本地日期和时间的文本框,并且在提交时会对输入的日期和时间进行有效性检查。

<input name="datetime-local1" type="datetime-local"> 

month类型

month类型的input元素是一种专门用来输入月份的文本框,并且在提交时会对输入的月份的有效性进行检查。

<input name="month1" type="month" value="2010-10">

week类型

week类型的input元素是一种专门用来输入周号的文本框,并且在提交时会对输入的周号之有效性进行检查。它可能是一个简单的输入文本框,允许用户输入一个数字;也可能更复杂、更精确。

<input name="week1" type="week" value="2010-W40">

color类型

color 类型的input元素用来选取颜色,它提供了一个颜色选取器。

<input name="color" type="color">

output元素

output元素定义不同类型的输出,比如计算结果或脚本的输出。output元素必须从属于某个表单,也就是说,必须将它书写在表单内部,或 者对它添加form属性。

<form id="testform">
  请选择一个数值:
  <input name="range1" type=range min=0 max=100 step=5/>
  <output onforminput="value=range1.value">50</output>
</form>

表单验证

自动验证

在H5中,通过对元素使用属性的方法,可以实现在表单提交时执行自动验证的功能。

required属性

在提交时,如果元素中内容为空白,则不允许提交,同时在浏览器中显示信息提示文字,提示用户这个元素中必须输入内容。

pattern属性

input元素使用pattern属性,并且将属性值设为某个格式的正则表达式,在提交时会检查其内容是否符合给定格式。当输入的内容不符合给定格式时,则不允许提交,同时在浏览器中显示信息提示文字,提示输入的内容必须符合给定格式。

min属性与max属性

minmax这两个属性是数值类型或日期类型的input元素的专用属性,它们限制了在input元素中输入的数值与日期的范围。

step属性

step属性控制input元素中的值增加或减少时的步幅。例如当你想让用户输入的值在0与100之间,但必须是5的倍数时、你可以指定step为5。

显式验证

除了对input元素添加属性进行元素内容有效性的自动验证外,在H5中,form元素与input元素 (包括select元素与textarea元素)都具有一个checkValidity方法。调用该方法,可以显式地对表单内所有元素内容或单个元素内容进行有效性验证。checkValidity方法以boolean的形式返回验证结果。

<script language="javascript">
function check(){
    var email = document.getElementById("email");
    if(email.value==""){
        alert("请输入Email地址");    
        return false;
    }    
    else if(!email.checkValidity())
        alert("请输入正确的Email地址"); 
    else
        alert("您输入的Email地址有效");
}
</script>
<form id=testform onsubmit="return check();">
<label for=email>Email</label>
<input name=email id=email type=email /><br/> 
<input type=submit>
</form>

另外,在H5中,form元素与input元素都还存在一个validity属性,该属性返回一个ValidityState对象。该对象具有很多属性,但最简单、最重要的属性为valid属性,它表示了表单内所有元素内容是否有效或单个input元素内容是否有效。

取消验证

有时我们可能想要把表单临时提交一下,但又不想让它进行表单中所有元素内容的有效性检查。
有两种方法取消表单验证,第一种方法是利用form元素的novalidate属性,它可以关闭整个表单验证。
譬如,一个非常大的表单需要分成两部分,在第二部分中有个文本框中内容是必须要填的,如果填每一部分内容则会耗时较多,或填完第一部分之后,第二部分要过一段时间再填,在这种情况下应该允许用户先提交保存第一部分内容。但是同时需要临时取消第二部分的内容表单验证。
当整个表单的第二部分需要验证的内容比较多,但又想先提交表单的第一部分内容时,可以使用novalidate属性。先把该属性设为true,关闭表单验证,提交第一部分内容。然后在提交第二部分时再把它设为false,打开表单验证,提交第二部分内容。
第二种方法是利用input元素或submit元素的formnovalidate属性,利用input元素的formnovalidate属性可以让表单验证对单个input元素失效,当表单的第二部分中需要验证的元素数量很少时,可以只利用这些元素的formnovalidate属性,让表单验证对这些元素失效。
而如果对submit按钮使用了formnovalidate属性,点击该按钮时,相当于利用了form元素的novalidate属性,整个表单验证都失效了。
利用这一点,可以实现"假提交"与"真提交"的效果,例如一个提交按钮,不带表单验证,提交时不进行数据有效性检查,提交时临时保存到文件或什么地方, 另一个提交接钮为真提交,提交后保存到数据库中。

自定义错误信息

在H5中,可以使用JS调用各input元素的setCustomValidity方法来自定义错误信息。

<script language="javascript">
function check(){
    var pass1=document.getElementById("pass1");
    var pass2=document.getElementById("pass2");
    if(pass1.value!=pass2.value)
        pass2.setCustomValidity("密码不一致。");
    else
        pass2.setCustomValidity("");
    var email=document.getElementById("email");
    if(!email.checkValidity())
        email.setCustomValidity("请输入正确的Email地址。");
}
</script>
<form id="testform" onSubmit="return check();">
密码:<input type=password name="pass1" id="pass1" /><br/>
确认密码:<input type=password name="pass2"  id="pass2"/><br/>
Email:<input type=email name="email1" id="email"/><br/>
<input type="submit" />
</form>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • html5 表单 新增input类型 新增表单元素 html5表单验证 新增表单属性 新增的input类型 inp...
    卓小生阅读 735评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,502评论 18 139
  • 表单基础知识 在HTML中,表单是由 元素来表示的,而在JS中,表单对应的则是HTMLFormElement类型。...
    oWSQo阅读 901评论 0 1
  • 自打当了妈,泪点就变得特别低,根本看不得孩子受罪(写作业除外),以前网上出现关于虐童的新闻或视频也压根儿没勇气点开...
    做做早餐谈谈娃阅读 336评论 1 3
  • 坐在图书馆二楼的一个角落,疲惫的我无聊的翻着朋友圈,正听着薛之谦发布的第二首歌,歌名叫做像风一样,一行字映入了我...
    董郴阅读 349评论 0 0