输入模式

HTML5为文本字段新增了pattern属性,这个属性的值是一个正则表达式,用于匹配文本框中的值

例如,只想在允许在文本字段中输入数值

<input type="text" pattern="\d+" name="count">

注意,模式的开头和结尾不用加^和$符号(假定已经有了),这两个符号表示输入的值必须从头到尾与模式匹配

与其他输入类型相似,指定的pattern也不能阻止用户输入无效的文本,。这个模式应用给值,浏览器来判断值是否有效,在Javascript中可以通过pattern属性访问模式

var pattern=document.forms[0].elements["count"].pattern;

检测浏览器是否支持pattern属性

var isPatternSupported="pattern" in document.createElement("input");

检测有效性

checkValidity()方法可以检测表单中某个字段是否有效,检测的依据是之前介绍过的那些约束

if(document.forms[0].element[0].checkValidity()){

  //字段有效时执行的代码

  }else{

  //字段无效时执行的代码

  }

checkValidity()反馈字段是否有效,而validity对象反馈字段的有效或无效原因,其包含一系列属性,每个属性返回一个布尔值

customError:如果设置了setCustomValidity(),则为true,否则返回false

patternMismatch:如果值与指定的pattern属性不匹配,返回true

rangeOverflow:如果值比max大,返回true

rangeUnderflow:如果值比min小,返回true

stepMisMatch:如果min和max之间的步长值设置不合理,返回true

toolong:如果值得长度超过了maxlength属性指定的长度,返回true,有的浏览器(Firefox4)会自动约束字符数量,因此这个值永远都返回false

typeMismatch:如果值不是“mail”或“url”,返回true

valid:如果这里的其他属性都是false,返回true

valueMissing:如果标注为required的字段没有值,返回true

if(input.validity && !input.validity.valid){

    if(input.validity.valueMissing){

        //执行一段代码

      }

  }

禁用验证

设置novalidate属性,告诉表单不进行验证

<form method="post" action="signup.php" novalidate>

  <!--插入表单元素-->

</form>

如果一个表单中有多个提交按钮,指定某个提交按钮不必验证表单,可以在相应的按钮上添加formnovalidate属性

<input type="submit" formnovalidate name="btnNoValidate">

选择框脚本

选择框通过<select>和<option>元素创建,除了所有表单字段共有的属性和方法外,HTMLSelectElement类型还提供了下列属性和方法

add(newOption,relOption):向控件中添加新的<option>元素,其位置在(relOption)之前

multiple:布尔值,表示是否允许多项选择;等价于HTML中的multiple特性

options:控件中所有<option>元素的HTMLCollection

remove(index):移除给定位置的选项

selectedIndex:基于0的选中项的索引,如果没有选中项,则值为-1,对于支持多选的控件,只保存选中项中第一项的索引

size:选择框中可见的行数;等价于HTML中size特性

选择框的type属性不是“select-one”就是“select-multiple”,取决于HTML代码中有没有multiple特性。

选择框的value属性由当前选中项决定的:

没有选中项,value保存空字符串

有一个选中项,该项的value特性已经在HTML中指定,选择框的value属性等于该选中项的value特性

有一个选中项,该项的value特性未在HTML中指定,选择框的value属性等于该选中项的文本

如果有多个选中项,选择框的value属性依据前两条的规则取得第一个选中项的值

在DOM中,每个<option>元素都有一个HTMLOptionElement对象表示,具有下列属性

index:当前选项在options集合中的索引

label:当前选项的标签;等价于HTML中label特性

selected:布尔值,表示当前选项是否被选中,设置为true可以选中当前选项

text:选项的文本

value:选项的值(等价于HTML中的value特性)

还要注意的一点是:选择框的change事件与其他表单字段的change事件触发条件不一样,其他表单字段在值被修改且焦点离开当前字段时触发,而选择框只要选中了选项就会触发

不同浏览器下,选项的value属性返回的值也存在差别,在所有浏览器中,value属性始终等于value特性,未指定value特性的情况下,IE8返回空字符串,其他现代浏览器返回与text特性相同的值

JavaScript高级程序设计55.pdf的更多相关文章

  1. JavaScript高级程序设计61.pdf

    JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...

  2. JavaScript高级程序设计60.pdf

    错误处理 try-catch语句 try{ //可能会导致错误的代码 }catch(error){ //在错误发生时如何处理 } error是一个包含着错误信息的对象,它有一个message属性,保存 ...

  3. JavaScript高级程序设计58.pdf

    15章 使用Canvas绘图 略 16章 HTML5脚本编程 HTML5规范了新的HTML标记和JavaScript API,以便简化创建动态Web界面的工作 跨文档消息传递 简称XDM,指来自不同域 ...

  4. JavaScript高级程序设计57.pdf

    表单序列化 首先了解一下浏览器如何将数据发送给服务器 对表单字段的名称和值进行URL编码,使用和号(&)分隔 不发送禁用的表单字段 只发送勾选的复选框和单选按钮 不发送type为“reset” ...

  5. JavaScript高级程序设计54.pdf

    过滤输入 对于一些浏览器,可以使用正则表达式里的text()测试用户按下的按键,Firefox和safari(3.1版本之前)会对向上向下.退格键和删除键触发keypress事件,在Firefox中, ...

  6. JavaScript高级程序设计53.pdf

    共有的表单字段方法 每个表单字段都有两个方法:focus()和blur(),其中focus()用于将浏览器焦点设置到表单字段,激活表单字段.可以侦听页面的load事件 EventUtil.addHan ...

  7. JavaScript高级程序设计52.pdf

    表单脚本 表单的基础知识 在HTML中,表单是由<form>元素表示的,在Javascript对应的是HTMLFormElement类型,它继承自HTMLElement,因此具有与其他HT ...

  8. JavaScript高级程序设计50.pdf

    hashchange事件 HTML5新增了hashchange事件,以便在URL的参数列表(及URL中“#”号后面的所有字符串)发生变化时通知开发人员,之所以新增这个事件,是因为在Ajax应用中,开发 ...

  9. JavaScript高级程序设计49.pdf

    HTML5事件 contextmenu事件 contextmenu事件是冒泡的,可以将事件处理程序指定到document,这个事件的目标是用户操作的元素,在兼容DOM的浏览器中使用event.prev ...

随机推荐

  1. (转)UIButton用法详解一

    (注明 来源网址 http://blog.csdn.net/cheneystudy/article/details/8115092)这段代码动态的创建了一个UIButton,并且把相关常用的属性都列举 ...

  2. Android学习7--日志信息的使用

    在代码的调试中,日志信息是必不可少的,关于日志信息的使用,接下来,小编简要的说明一下: 日志分为几种:Verbose:从字面上解释,verbose为冗长的,啰嗦的,所以verbose日志信息输出的内容 ...

  3. Socket 死连接详解

    Socket 死连接详解 当使用 Socket 进行通信时,由于各种不同的因素,都有可能导致死连接停留在服务器端,假如服务端需要处理的连接较多,就有可能造成服务器资源严重浪费,对此,本文将阐述其原理以 ...

  4. 【原创】Linux 增加系统调用

    Linux 增加系统调用大致步骤: 1.下载好内核文件,在内核源文件中添加好自己的调用函数. 2.编译内核 3.验证. 一.在内核源文件中增加自己的函数   首先将内核文件移至/usr/src/下并解 ...

  5. python【第二十篇】Django表的多对多、Ajax

    1 创建多对多表的方式有两种 1.1 方式一:自定义关系表 class Host(models.Model): nid = models.AutoField(primary_key=True) hos ...

  6. c# datagridview导出到excel【转载】

    c# datagridview导出到excel[转载] http://hi.baidu.com/weizier/blog/item/8212caea1123b4d6d439c9fe.html 本作者使 ...

  7. bss段为什么需要初始化?

    我们都知道bss段需要初始化,但是这是为什么呢? 通过浏览资料,我们都会发现,bss段是不会出现在程序下载文件(*.bin *.hex)中的,因为全都是0.如果把它们出现在程序下载文件中,会增加程序下 ...

  8. Leaflet学习笔记-Leaflet.awesome-markers

    基础篇传送门 http://www.cnblogs.com/CoffeeEddy/p/4919987.html 效果图 是不是感觉很美观啊 为什么选择awesome 地图上面需要各种各样的Mark,难 ...

  9. [转]JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解

    [转] JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 - dreamman的日志 - 网易博客http://blog.163.com/dreamman_yx/blog/st ...

  10. Spring 3整合Quartz 2实现定时任务一:常规整合 (基于maven构建)

    最近工作中需要用到定时任务的功能,虽然Spring3也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能也不够强大.在考虑之后,决定整合更为专业的Quartz来实现定时任务功能. 首先,当然是添加依 ...