`
webcode
  • 浏览: 6111652 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

《JavaScript高级程序设计》学习笔记(表单和数据完整性)

 
阅读更多

表单和数据完整性

创建表单元素是为了满足用户向服务器发送数据的需求。

表单基础

HTML表单通过<form/>元素来定义

特性:
method 属性 设置或获取如何将表单数据发送到服务器
action 属性 设置或获取表单内容要发送处理的 URL
enctype 属性 设置或获取表单发送的编码方式。默认是application/x-www-form-urlencoded,如果要上传文件要设成multipart/form-data。
accept 属性 上传文件时,列出服务器能正确处理的mime类型
acceptCharset 属性 设置或获取处理表单的服务器必须接受的字符编码

输入元素:
<input/> 元素 主要的HTML输入元素
通过type属性确定控件:
text radio checkbox file password button submit reset hidden image
<select/> 元素 组合框或下拉框,值由<option/>元素定义
<textarea/> 元素 多行文本,尺寸由rows和cols特性确定

<label/> 元素 将标签绑定到特定的表单字段
for 属性 指定绑定的表单id
当鼠标点击label容器,焦点将移到指定表单上
例如:
<input type="radio" name="r1" id="r1"/><label for="r1">已绑定</label><br/>
<input type="radio" name="r2" id="r2"/>无绑定

建议在每个表单字段都设置id和name属性,且值相等。(name用于数据提交,id用户客户端确定元素)

对<form/>元素进行脚本编写


获取表单引用
1 用getElementById()
例如:var oForm = document.getElementById("form1");

2 用document的form集合,并通过位置或name属性引用
例如:var oForm = document.forms[0];
或者:var oForm = document.forms["form1"];


访问表单字段
1 通过表单的elements集合,并通过位置或name属性引用
例如:var oElm = oForm.elements[0];
或者:var oElm = oForm.elements["elm"];

2 直接通过name属性访问
例如:var oElm = oForm.elm;
如果名字中有空格可以用方括号:
var oElm = oForm["elm 1"];

3 用getElementById()
例如:var oElm = document.getElementById("elm1");


表单字段共性
所有表单字段(除隐藏字段):
disabled 属性 设置或获取控件是否被禁用
form 属性 获取对象所在表单的引用
blur() 方法 使元素失去焦点并触发onblur事件
focus() 方法 使元素得到焦点并触发onfocus事件
onblur 事件 元素失去焦点时触发
onfocus 事件 元素得到焦点时触发

注意:隐藏字段(hidden)只有form属性


提交表单
1 使用提交按钮或提交图象提交表单
例如:
<input value="submit" type="submit" />
<input src="submit.gif" type="image" />
当客户点击以上按钮将提交表单,如果按回车,并存在这些按钮,浏览器会认为点击了按钮

2 获取表单引用,再使用submit()方法
例如:
document.getElementById("form1").submit();
用button模拟submit:
<input value="submit" type="button" onclick="this.form.submit();" />

onsubmit 事件 表单提交时触发
例如;
<form onsubmit="alert('提交');">

注意:如果是使用submit()方法提交,将不会触发submit事件


仅提交一次
方法:用户点击提交按钮后,将其禁用
例如:
<input value="submit" type="button" onclick="this.disabled=true;this.form.submit();" />
注意:如果用submit类型按钮,由于在表单提交前就已被禁用,将导致提交失败


重置表单
1 使用Reset按钮
例如:
<input value="reset" type="reset" />

2 获取表单引用,再使用reset()方法
例如:
document.getElementById("form1").reset();
用button模拟submit:
<input value="reset" type="button" onclick="this.form.reset();" />

onreset 事件 表单重置时触发
<form onreset="alert('重置');">

不同于submit()方法,使用reset()方法也会触发reset事件

注意:对于表单的默认信息,重置后还是会保留的,对于没有默认信息的表单应尽量避免使用

文本框

有两种文本框:
单行文本框 <input type="text"/>
size 属性 文本框宽度
value 属性 文本框初始内容
maxlength 属性 文本框允许最大字符数
例如:
<input type="text" size="10" maxlength="20" value="请输入内容"/>

多行文本框 <textarea/>
rows 属性 以字符为单位文本框的高度
cols 属性 以字符为单位文本框的宽度
<textarea/>的初始值包含在标签之间
例如:
<textarea rows="9" cols="5">请输入内容</textarea>
而且<textarea/>不能指定允许最大字符数


获取/更改文本框的值
value 属性 获取或设置文本框文本
value.length 属性 获取文本框中文本长度


选择文本
select() 方法 选中文本框中所有文本(必须已经获得焦点)
为确保文本框获得焦点,最好在调用select()前调用focus()
例如:
<input type="text" id="txt"/>
<input value="选择" type="button" onclick="txt.focus();txt.select();" />


文本框事件
除了blur和focus事件,还支持change和select事件
change 事件 用户更改内容并失去焦点时触发
注意:通过value属性更改内容将不会触发,而且触发时先触发change事件,再触发blur事件
select 事件 当一个或多个字符被选中时触发
无论手工还是select()方法,与焦点无关


自动选择文本
例如:
<input type="text" onfocus="this.select()"/>
<textarea onfocus="this.select()"></textarea>


自动切换到下一个
通过表单的elements集合,获取下一个表单元素


限制textarea的字符数
例如:
<textarea onkeypress="return this.value.length < 10;"></textarea>


允许/阻止文本框中的字符
用于验证用户数据,或阻止无效数据输入

阻止无效字符
设定要阻止的字符,再检测输入字符的charCode是否要阻止的字符

允许有效字符
设定允许的字符,再检测输入字符的charCode是否允许的字符

对于粘贴内容
1 禁止粘贴
ie中,用onpaste事件阻止粘贴行为,其他还需要用oncontextmenu事件
例如:<textarea onpaste="return false" oncontextmenu="return false"></textarea>
对于用Ctrl+V进行的粘贴,可根据charCode和ctrlKey判断按键是否Ctrl+V

2 失去焦点验证
在onblur事件中检测
注意:不能在onchange事件中检测,当第一次检测时能正常发现不正确内容,这时焦点回到原来文本框,但如果第二次并没有修改不正确的内容,所以没有触发onchange事件,即没有触发检测事件直接跳过了。


使用上下键操作数字文本
在onkeydowm事件中操作

列表框和组合框

列表框和组合框通过HTML的<select/>元素来创建。
size 属性 同时可见的条目个数


访问选项
HTML DOM为每个<select/>元素定义了 options 集合
获取<option/>显示文本和值:
一般DOM方法:
oListbox.option[1].firstchild.nodevalue;
oListbox.option[1].getAttribute("value");
HTML DOM方法:
oListbox.option[1].text;
oListbox.option[1].value;

index 属性 表示在options集合中的位置
例如:oListbox.option[1].index; //1

length 属性 表示选项数目
例如:oListbox.options.length;


获取/更改选中项
select:
selectedIndex 属性 选中的选项的索引(没有选中时为-1)
multiple 属性 设为"multiple"时可以在列表框中选择多个选项
如果选中多个选项,selectedIndex将包含第一个选项的索引

option:
selected 属性 表示选项是否被选中
通过对选项循环判断selected属性,获取所有选中选项的索引


添加选项
用javascript添加选项:
1 使用DOM方法创建<option/>元素
var oOption = document.createElement("option");
2 创建文本节点,并分配名称
oOption.appendChild(document.createTextNode(sName));
3 设置选项的值
oOption.setAttribute("value", sValue);
4 将选项添加到列表框中
oListbox.appendChild(oOption);


删除选项
用javascript删除选项:
1 将要删除的选项设置为null
oListbox.options[1] = null;
2 使用remove()方法,参数为要删除的选项的索引
oListbox.remove(0);
注意:如果用循环来删除多个选项,最好从最大的索引开始操作,因为删除后index索引会重置


移动选项
把选项从一个列表框移动到另一个列表框:
1 获取要移动的选项的引用
var oOption = oListboxFrom(iIndex);
2 在另一个列表框中使用appendChild()方法添加该选项,同时该选项会从当前列表框中删除
oListboxTo.appendChild(oOption);
注意:跟删除选项一样,如果要移动多个选项,最好从最大的索引开始操作


重新排序选项
将选项进行重新排序,包括向上和向下移动:
1 获取要移动的选项的引用
var oOption = oListbox(iIndex);
2 获取要移动的位置的选项
向上移动:var oPrevOption = oListbox.options[iIndex-1];
向下移动:var oNextOption = oListbox.options[iIndex+1];
3 使用insertBefore()方法重新设置位置
向上移动:oListbox.insertBefore(oOption, oPrevOption);
向下移动:oListbox.insertBefore(oNextOption, oOption);

创建自动提示的文本框

这种文本框会检查用户输入的头几个字符,然后给出帮助用户输入的列表


匹配
搜索字符串数组并返回以特定字符开头的所有值:
1 创建用于存储所有匹配的值的数组
var arrResule = new Array;
2 确保进行匹配的字符串非空,再循环找出匹配的每个值,并添加到数组中
if(arrValues[i].indexof(sText)==0) arrResult.push(arrResule[i]);
建议:在得到匹配数组后最好用sort方法排序,对于字符串可结合localeCompare方法


内部机制
使用keyup事件调用提示程序
1 清空列表框(参考删除选项)
2 把匹配数组的值插入到列表框(参考添加选项)
3 给列表框的选项添加onclick事件,将文本框内容设置为当前选中的选项
注意:由于匹配过程是区分大小写的,建议先将字符串转为小写或大写

分享到:
评论

相关推荐

    网页程序设计笔记-HTML,JavaScript,CSS,Ajax

    网页程序设计是一门涵盖多个关键技术领域的综合学科,主要包括HTML(超文本标记语言...总的来说,这个压缩包提供了一个全面的网页程序设计学习路径,涵盖了从基础到高级的关键技术,适合希望进入网页开发领域的学习者。

    Html、CSS、GIt、Linux、nodejs、JavaScript、Vue、MySQL等学习笔记.zip

    JavaScript和Vue.js的学习笔记可能包含函数、对象、组件、路由等内容,而MySQL部分可能讲解了数据库设计,查询优化,事务处理等。 通过深入学习这些笔记,你可以全面了解并掌握Web开发的各个环节,从创建静态页面到...

    学习笔记 MHT3

    “发布一个支持N级下拉列表联动的控件 - JQuery - web - JavaEye论坛”讨论的是使用JQuery实现的多级联动下拉列表,这对于前端界面交互设计来说是一个实用的技巧,尤其在处理复杂表单和数据关联时。 最后,“comet ...

    十分有用有帮助的EXT学习笔记

    EXT,全称EXT JS,是一种基于JavaScript的前端框架,用于构建富互联网应用程序(RIA)。它提供了丰富的组件库,包括表格、窗体、面板、图表等,使得开发者可以创建功能强大的Web应用界面。以下是对EXT学习笔记中涉及...

    2011韩顺平轻松搞定网页设计(html+css+js)之javascript现场授课笔记(完整版).doc

    JavaScript,简称为JS,是一种广泛应用于Web开发的轻量级...通过不断地学习和实践,开发者能够创建更复杂、更具互动性的网页应用程序。韩顺平老师的课程提供了深入浅出的讲解,对于初学者来说是一份很好的学习资源。

    ext学习资料 20篇详细学习笔记 初学者ext学习的文档

    EXT,全称EXT JS,是一种基于JavaScript的前端框架,由Sencha公司开发,主要用于构建富互联网应用程序(RIA)。EXT提供了一套完整的组件模型、数据绑定、事件系统和强大的布局管理,使得开发者能够创建功能丰富的、...

    asp网络编程学习笔记15章

    - 数据库设计:创建相关表结构,考虑关系模型和数据完整性。 第六章:页面布局与交互设计 - HTML/CSS/JavaScript基础:理解页面结构、样式控制及前端交互实现。 - AJAX技术:利用XMLHttpRequest异步更新部分页面,...

    Laravel 5 学习笔记

    ### Laravel 5 学习笔记知识点汇总 #### 环境配置与初始化 - **环境配置**:在开始使用 Laravel 5 前,需要确保系统安装了 PHP、Composer 和其他必要的开发工具。 - **`.env` 文件**:这是一个包含应用配置参数的...

    PHP学习笔记总结.doc

    【PHP学习笔记总结】 PHP(超文本预处理器)是一种广泛使用的开源脚本语言,特别适合于Web开发。它能够嵌入HTML中,让开发者在服务器端处理数据,生成动态网页内容。与JavaScript不同,PHP代码在服务器上执行,然后...

    Prototype学习笔记(最新整理)

    ### Prototype学习笔记(最新整理) #### 1. Prototype是什么? Prototype是一个由Sam Stephenson编写的JavaScript库,旨在简化客户端脚本编程,使开发者能够轻松创建动态的、交互式的Web应用程序。该库通过提供一...

    java基础完整版印象笔记

    【Java基础】 Java是一种广泛使用的面向对象的编程语言,由Sun ...以上就是"java基础完整版印象笔记"中所涵盖的主要知识点,通过学习这些内容,初学者可以建立起坚实的编程基础,并逐步进阶到更复杂的Web开发领域。

    达内全套笔记

    在信息技术迅猛发展的当今社会,掌握编程技能和数据管理知识已经成为专业人士的必备素质。而“达内全套笔记”作为一份综合性极强的学习资料,为有志于在IT领域深耕的初学者们提供了一条清晰的学习路径。这套笔记内容...

    javascript_total:完整JavaScript课程

    JavaScript经常被用来增强HTML的交互性,实现动态效果,如响应式设计、表单验证、AJAX(异步JavaScript和XML)请求以及现代Web应用的构建。 在压缩包文件"javascript_total-master"中,"master"通常表示这是课程的...

    ExtJS4.0 MVC 学习资料集合

    MVC(Model-View-Controller)模式是其核心设计模式,帮助开发者组织和管理复杂的代码结构,提高代码可维护性和可扩展性。本资料集合针对初学者,提供了丰富的学习资源,帮助快速入门ExtJS4.0的MVC应用开发。 一、...

    PHP学习总结笔记.pdf

    非框架版和TP框架版(ThinkPHP)的常见模块包括用户认证、权限管理、session和cookie管理、错误和日志处理、表单验证、模板引擎等。 【PHP+Mysql构造网站系统案例】 结合MySQL数据库,PHP可以构建复杂的网站系统,...

    PHP学习总结笔记资料.pdf

    它的易学性使其成为初学者入门的理想选择,同时也提供了高级特性供专业程序员使用。PHP主要应用于三个方面:服务端脚本、命令行脚本和桌面应用程序开发。 1. **服务端脚本**:PHP与Web服务器和浏览器配合,用于生成...

    自学javaweb-b站黑马Xmind思维导图笔记

    MVC模式则是一种软件设计模式,将应用分为模型、视图和控制器三个部分,实现了业务逻辑、数据展示和用户交互的分离,提高了代码的可维护性和可扩展性。 接下来,Maven是Java项目管理工具,它简化了构建、依赖管理和...

Global site tag (gtag.js) - Google Analytics