JavaScript高级程序设计第14章表单脚本 (学习笔记)
第十四章 表单脚本
1.阻止默认表单提交
1.提交表单数据
1.使用type=submit提交按钮
2.使用submit():方法
注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有机会验证数据并决定要不要提交表单
1.preventnDefault(event):可以用在表单数据无效时不发给服务器,对于动态绑定的onclick 事件。
2.Submit()方法也可以提交表单,但是不会触发submit事件,所以在使用时须先验证表单数据,
如:<%
response.write(trim(request.form("a")))
%>
<form name="myform" method="post" action="">
<input name="a" value="abc"><br>
<input type="submit" value="提交1" onClick="return checkform()">//onClick="return checkform()" IE可以阻止,FF可以阻止<br><br>
<input type="submit" value="提交2" onClick="checkform()">//onClick="checkform()" IE无法阻止,FF无法阻止<br><br>
<input name="submit3" type="submit" value="提交3">//submit3.attachEvent("onclick",checkform) IE可以阻止,FF无法阻止<br><br>
如果是直接写在onclick里面,我们直接用return checkform()就好了。<br>
问题是有时候,我们又不乐意写在DOM元素里,非要搞什么动态绑定click事件。<br>
动态绑定click事件请看提交3,IE可以阻止,FF无法阻止,浏览器不兼容!<br><br>
<!--以下两个是解决方案,提交4是直接写在onclick里面,提交5是动态绑定事件的情况 -->
<input type="submit" value="提交4" onClick="checkform_success(event)">//onClick="checkform_success(event)" IE可以阻止,FF可以阻止<br><br>
<input name="submit5" type="submit" value="提交5">//submit5.attachEvent("onclick",checkform_success) IE可以阻止,FF可以阻止<br><br>
</form>
<script>
if(document.all){//ie
document.myform.submit3.attachEvent("onclick",checkform);
document.myform.submit5.attachEvent("onclick",checkform_success);
}else{//ff
document.myform.submit3.addEventListener("click",checkform,false);
document.myform.submit5.addEventListener("click",checkform_success,false);
}
function checkform(){
if(document.myform.a.value=="abc"){
alert("验证不通过!");
returnfalse;
}
}
function checkform_success(e){
e=e||window.event;
if(document.myform.a.value=="abc"){
alert("验证不通过!");
if(document.all) e.returnValue=false;//ie,window.event.returnValue=false阻止元素默认行为
else e.preventDefault();//火狐,event.preventDefault阻止元素默认行为
}
}
</script>
return false不是取消事件冒泡,而是取消“浏览器默认行为”。比如一个链接<a href="http://zhidao.baidu.com">百度知道</a>当我们点击这个链接时,浏览器会自动跳转到:zhidao.baidu.com这个地址,这是浏览器的默认行为,如果我们这么做:<a href="http://zhidao.baidu.com" onclick="return false">百度知道</a>那么再次点击这个链接时,浏览器则不会进行跳转。
JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置。 而该值决定了当前操作是否继续。当返回的是true时,将继续操作。当返回是false时,将中断操作。 而直接执行时(不用return)。将不会对window.event.returnvalue进行设置所以会默认地继续执行操作 详细说明如下:例如:当在 <a href="abc.htm" onclick="return add_onclick()">Open</a> 中如果函数 add_onclick() 返回 true, 那么 页面就会打开 abc.htm否则, (返回 false), 那么页面不会跳转到 abc.htm, 只会执行你的 add_onclick() 函数里的内容. (add_onclick函数中控制页面转到 abc.htm除外
2.重置表单数据
当用户点击重置按钮时,会触发reset事件,从而在这里我们有机会验证数据并决定要不要重置表单
3.访问表单方法
1.可以通过DOM访问表单(通过给表单添加Id来访问)
2.可以通过evements属性(该属性是所有表单元素的集合)类似数组,
a) 类如:获取表单中的打一个字段:
Var field=forn.evements[0]
4.表单共有属性
a) Disabled:布尔值,表示当前字段是否被禁用
b) Form:指向当前字段所属表单的指针,只读
c) Name:当前字段的name
d) readOnly:布尔值,表示当前字段是否只读
e) tabIndex:表示当前字段的切换(tab)序号
f) Tyep:当前字段的类型,如“checkbox ,radio”等
g) Value:当前字段要被提交到服务器上的值。
5.表单的共有方法
a) Focus():获得焦点
b) Blur():失去焦点
6.表单的事件
a) Blur:当失去焦点时触发
b) Change:对于<input>和<textarea>元素,在他们失去焦点且value的值改变时触发,对于<select>元素在其选项改变时触发
c) Focus:当前字段获得焦点时触发。
7.选择文本select()方法
1.在调用select方法时,大多数浏览器都要把焦点设置在文本框中,
2.Select事件:在选择文本框中的文本时就会触发此事件,在调用select()方法时也会触发此事件。
3.取得选择的文本属性:
a) selectionStart,
b) selectionEnd:
因为substring()方法是基于字符串的偏移量操作,所以将selectionStart,selectionEnd传递给它就可以取得选中文本。
如:function getSelectedText(text){
Return textbox.value.substring(selectionStart,electionEnd);
}
8.过滤输入
1.根据keypress事件和preventnDefault()阻止默认行为可以判断屏蔽输入的字段,
如:keypress=function(event){
If(输入的不符合){
执行:event.preventnDefault()
}
}
9.选择框脚本
1.独有的属性和方法
a)add(newOption,relOption)向控件中插入新<optioon>其位置在 relOption之前;
b)Multiple:布尔值,表示是否允许多项选择,
c)Remove(index)移除给定位置的选项,
d)selectedIndex:基于0的选项的索引,如果没有选中项则返回值为-1.对于支持多选的控件,只保存选项中的第一项索引,
e)Size:选项中可见的行数
注意:1.如果没有选中项,则选择框的value属性保存空字符串
2.如果有一项被选中,而且该项的value属性已经在HTML中被指定,则选择框的value属性等于选项中的value特性,即使value的特性值是空字符串,也同样遵循此条规则。
3.如果有一项被选中,该项的value属性在HTML中未被指定,则选择框的属性等于该项文本
4.如果有多项选中,则选择框的value属性将依据前两条规则取得第一选中项的值。以下
<select>
<option value=”sunnyvale,ca”>sunnyvale</option>
<option value=”Los Anggeles ,CA”>sunnyvale</option>
<option value=””>china</option>
<option>Australia</option>
如果用户选择了其中一项,则选项框的值是sunnyvale,ca,如果文本为“China”被选中,则选项框的值为空因为其value特性是空,如果选择最后一项,那么由于<option>中没有value特性所以选项框的值为Australia
2.option的属性
在DOM中每个<option>都有个HTMLOptionElement对象为便于访问数据,它具有以下属性:
a)index:当前选项option集合中的索引。
b)Label: 当前选项的标签
c)Selected:布尔值表示当前选项是否被选中,将这个属性设置为ture时可以选中当前选项。
d)Text:选项的文本
e)Value:选项的值。
3.选择选项
a)对于只选择一项的选择框,访问选中项的方式,就是使用selectesIndex属性
b)对于多选的选项框
取得某一项的索引,然后将其selected的属性设为ture,在允许多选的选项框中设置选项的selected属性,不会取消对其他选中项的选择。因此可以动态地选择任意多项,实际上selected的作用就是确定用户选择了哪一项,要取得所有选中的项,可以循环便利选项集合,然后测试每个选项的selected的属性。
4.添加选项
a) 使用Dom方法
Var newOption=document.createElement(“option”) //创建option节点
newOption.appendChild(document.createTextNode(“option text”));
//给节点插入文本内容
newOption.setAttribute(“value”,Option value) //设置节点的属性
selectbox.appendChild(newOption) //把该节点插入到selectbox.)
b)使用option构造函数
此函数接受两个参数:文本(text)和值(value)
Var newOption=new Option(“Option text”, “Option value”)
selectbox.appendChild(newOption);不适用于Ie
c)add()方法
两个参数:要添加的新选项和将位于新选项之后的选项,第二个参数可选,兼容DOMl浏览器要求第二个参数必须写,而且如果指定,该参数必须是新选项之后的索引,如设置为undefined,就可以在所有浏览器中都将新选项插入列表左后。
Var newOption=new Option(“Option text”, “Option value”)
selectbox.add(newOption,undefined);
5.移除选项
a)selectbox.removeChild(selectbox.option[0])移除第一项
b)Selectbox.remove(0)
c)selectbox.option[0]=null
JavaScript高级程序设计第14章表单脚本 (学习笔记)的更多相关文章
- javascript权威指南第14章 表单脚本示例代码
HTML部分 <!DOCTYPE html> <html> <head> <title></title> </head> < ...
- 读书时间《JavaScript高级程序设计》七:表单
在HTML中表单是有<form>元素表示,在JS中表单对应的是HTMLFormElement类型. 表单自有的属性和方法: 获取表单 1. 通过ID document.getElemen ...
- 《JavaScript高级程序设计》——第二章在HTML使用JavaScript
这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...
- ASP.NET MVC5 高级编程 第5章 表单和HTML辅助方法
参考资料<ASP.NET MVC5 高级编程>第5版 第5章 表单和HTML辅助方法 5.1 表单的使用 5.1.1 action 和 method 特性 默认情况下,表单发送的是 HTT ...
- 《JAVASCRIPT高级程序设计》第一章
在使用调制解调器的时代,频繁的表单验证对客户端来说是一个很大的负担,javascript,作为一种专门进行表单验证的客户端脚本语言诞生了.到今天,javascript早已超越了当初设定的角色.Java ...
- 《JavaScript 高级程序设计》第一章:简介
JavaScript 历史 JavaScript的诞生的主要是当时的 netspace 公司谋求为自己的浏览器 Navigator 添加一种脚本语言,以便在本地客户端进行一些行为操作,而这一功能的需求 ...
- HTML表单部分学习笔记
第一部分: <!-- action :指定处理提交表单的格式 method :指定提交表单的http方法 enctype:指明用来把表单提交给服务器时的互联网媒体形式 --> <fo ...
- 表单提交学习笔记(二)—使用jquery.validate.js进行表单验证
一.官网下载地址:http://plugins.jquery.com/validate/ 二.用法 1.在页面上进行引用 <script src="~/scripts/jquery-1 ...
- JavaScript 高级程序设计 第5章引用类型 笔记
第五章 引用类型 一.object类型 1.创建方法: 1.使用new 操作符创建 var person=new object() Person.name=”Nicholasa” Porson.age ...
随机推荐
- 关于升级到win10后的网络问题
最近我的alienware电脑从win7升级到win10,看到很多网友都有一个问题,那就是网络受限了, 基本看了很多百度到的,方法基本都不是很有用,我看到了一个网友的办法完美解决了我机器上的网络问题, ...
- U盘装系统系列一—-安装老毛桃U盘启动制作工具
今天跟大家分享下如何制作U盘启动盘,通过U盘启动来安装操作系统.U盘便于携带,同时能解决光驱出问题装不了系统的麻烦,可谓是装机利器!我一直用的都是老毛桃的U盘启动制作工具,很好用,很强大,就以它来演示 ...
- PHP中取出字符串中的空格 逗号
preg_replace("/\s| |,|,/","",$_str) PHP中取出字符串中的空格 逗号 (包括中文状态下)
- [转载]css3属性box-sizing:border-box的作用
http://jastate.com/css3-properties-box-sizingborder-box.html 定义和用法 按照w3c school的说法,box-sizing:border ...
- Python 使用for代替in判断一个元素属于某个集合
string1 = raw_input("输入in之前的字符:")string2 = raw_input("输入in之后的字符:")x = ''if len(s ...
- 【转】对ARM堆栈的理解
对ARM堆栈的理解 堆栈严格来说应该叫做栈,栈(Stack)是限定仅在一端进行插入或删除操作的线性表.因此,对栈来说,可以进行插入或删除操作的一端端称为栈顶(top),相应地,另一端称为栈底(bott ...
- VC维
vc理论(Vapnik–Chervonenkis theory )是由 Vladimir Vapnik 和 Alexey Chervonenkis发明的.该理论试图从统计学的角度解释学习的过程.而VC ...
- 在C语言控制台程序中播放MP3音乐
游戏没有声音多单调. 这里做一个简单的范例,用 mciSendString 函数播放 MP3 格式的音乐,先看看代码吧: // 编译该范例前,请把 background.mp3 放在项目文件夹中 // ...
- Ubuntu12.04 下svn服务搭建及Windows客户端tortoisesvn的使用
在Ubuntu服务端搭建apache+svn 在客户端使用Tortoisesvn工具. 第一步 安装SVN $sudo apt-get install subversion 安装成功后系统会自动建立一 ...
- Ushare应用
Ushare应用 Openwrt 系统功能强大,主要优势在于其开放性和可扩展性,Openwrt 安装ushare后,可将路由器变身为一个功能强大的家庭upnp流媒体服务器! 打开网上邻居,会显示发现u ...