JavaScript--基于对象的脚本语言学习笔记(三)
事件处理器
1、一个数据校验表单的例程
<html>
<head>
<title>js练习</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript">
String.prototype.trim=function(){
return this.replace(/^\s*/,"").replace(/\s*$/,"");
}
//处理表单submit事件的函数
var check=function(){
var form=document.forms[0];
var errStr="";
if(form.user.value==null||form.user.value.trim()==""){
errStr+="\nusername不能为空!"
form.user.focus();
}
if(form.pass.value==null||form.pass.value.trim()==""){
errStr+="\n密码不能为空!"
form.pass.focus();
} if(form.email.value==null||form.email.value.trim()==""){
errStr+="\n邮件不能为空!"
form.email.focus();
}
if(!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(form.email.value.trim())){
errStr+="\n邮件格式不正确!!"
form.email.focus();
} if(errStr!=""){
alert(errStr);
return false;
}else{
alert("验证成功!");
}
};
</script>
</head> <body id="body">
<div>
<h2>数据校验表单</h2>
<form id="register" name="register" method="post" onsubmit="return check(this);" action="#">
username:<input type="text" name="user"/><br/>
密 码:<input type="password" name="pass"/><br/>
电 邮:<input type="text" name="email"/><br/>
<input type="submit" value="提交"/><br/><hr/>
</form>
</div>
</body>
</html>
//也能够通过绑定DOM对象属性来设置事件处理函数。仅仅要在js脚本最后加入一行:document.forms[0].onsubmit=check;
2、当为HTML元素的onclick等属性指定一系列JavaScript脚本时,假设在这些js脚本中使用this,则该keyword引用该HTML元素本身 当为DOM对象的onclick属性指定一个JavaScript函数引用时,假设在函数中使用this,该this也是引用该DOM对象本身
3、DOM提供了一种事件绑定机制:addEventListener()
语法为:objectTarget.addEventListener("eventType",handler,captureFlag)
与addEventListener()方法相相应,DOM也提供了一个方法用于删除事件处理器:removeEventListener()
语法为:objectTarget.removeEventListener("eventType",handler,captureFlag)
在DOM事件模型中当浏览器检測到发生了某个事件时,将自己主动创建一个Event对象,并隐式地将该对象作为事件处理函数的第一个參数传入
4、一个DOM转发事件例程(非IE)
<html>
<head>
<title>js练习</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body id="body">
<input type="button" id="bt1" value="button1"/>
<input type="button" id="bt2" value="button2"/>
<div id="show"></div>
<script type="text/javascript">
//第一个button被单击时的事件处理函数
var rd=function(evt){
document.getElementById("show").innerHTML+='事件冒泡阶段:'+evt.currentTarget.value+"被击中了<br/>";
//创建一个普通事件
var e=document.createEvent("Events");
//初始化事件对象,指定该事件支持冒泡,不同意取消默认行为
e.initEvent("click",true,false);
//将事件转发到bt2
document.getElementById("bt2").dispatchEvent(e);
} //定义第二个button被单击时的事件处理函数
var goClick=function(evt){
document.getElementById("show").innerHTML+='事件冒泡阶段:'+evt.currentTarget.value+"<br/>";
}
//分别为两个button绑定事件处理函数
document.getElementById("bt1").addEventListener("click",rd,false);
document.getElementById("bt2").addEventListener("click",goClick,false);
</script>
</body>
</html> 5、取消事件的默认行为
DOM也提供了取消事件默认行为的方法,DOM中的事件对象都提供了preventDefault()方法,该方法不须要參数,仅仅要运行了给定事件的 preventDefault方法,该事件的默认行为将失效。
<body id="body">
友情链接:<br/>
<a id="mylink" href="http://www.njue.edu.cn">財经大学</a>
<script type="text/javascript">
var killClicks=function(event){
event.preventDefault();//这句话导致点击超链接不会跳转
alert("超链接被单击");
}
document.getElementById("mylink").addEventListener("click",killClicks,true);
</script>
</body>
//上面的代码尽管使用preventDefault方法取消了事件的默认行为,可是并未阻止处理函数的运行,也不会影响事件的传播
//以下的代码为超链接和document在事件传播阶段绑定了事件处理函数,将会得到运行
<body id="body">
友情链接:<br/>
<a id="mylink" name="我的超链接" href="http://www.njue.edu.cn">財经大学</a>
<div id="show"></div>
<script type="text/javascript">
var killClicks=function(event){
event.preventDefault();//这句话导致点击超链接不会跳转
alert("超链接被单击");
document.getElementById("show").innerHTML+="事件捕获阶段:"+event.currentTarget+"<br/>";
}
document.getElementById("mylink").addEventListener("click",killClicks,true);
document.addEventListener("click",killClicks,true);//为document绑定事件处理函数
</script>
</body>
JavaScript--基于对象的脚本语言学习笔记(三)的更多相关文章
- JavaScript--基于对象的脚本语言学习笔记(一)
1.两种嵌入js的方式 使用javascript前缀构建url:<a href="javascript:alert('执行JavaScript. .')">执行j ...
- Go语言学习笔记三: 常量
Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...
- InstallShield 脚本语言学习笔记
InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加. 一.基本语法规则 ...
- 【GO】GO语言学习笔记三
7.数组: 几乎是最常用的数据类型了... 数组就是指一系列同一类型数据 的集合.数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数 组的长度. 常规的数组声明方法: ...
- Go语言学习笔记(三) [控制结构、内建函数]
日期:2014年7月21日 一.控制结构 1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语 ...
- 【Linux_Shell 脚本编程学习笔记三、分支与循环结构】
if 语句是实际生产工作中最重要且最常用的语句,所以,必须掌握牢固 if 条件语法 1. 单分支机构 if [ 条件 ] then 指令 fi 或 if [ 条件 ]; then 指令 fi ...
- [C语言学习笔记三]格式化输出和输入
使用 printf 函数来输出,使用 scanf 函数来输入 在 printf 函数中使用变量,需要使用占位符代替. int 型一般存储整数,使用 %d 代替 long long int 型一般存储长 ...
- c语言学习笔记三
第三章,函数 字符串函数 //strcmp int my_strcmp(char *str1,char *str2) { while(*str1 = = *str2) /*不可用while(* ...
- 基于python实现自动化办公学习笔记三
Excel(1)写xls文件 # 有序字典from collections import OrderedDict# 存储数据from pyexcel_xls import save_data def ...
随机推荐
- iOS Foundation 框架基类
iOS Foundation 框架基类 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转 ...
- struts2在<s:select>用动态标签
后台传过来的必要性userlist成为一个下拉菜单.因此,认为使用<s:select>.但设置了很久设置的属性,在这个下跌. JSP代码: <s:select label=" ...
- 关与 Visual.Assist.X.V10.7.1912的Crack破解补丁(vs 番茄插件的key破解方法)
在win7系统下, 我用的是vs2012版本号. Visual Assist沿用了快10年的界面,最终有了更新,变得更加适合Win8 以及 VS2012的主题风格了 ,这也是以后软件的发展趋势,仅仅是 ...
- Vs2010 配置驱动的开发环境
我已被用来VS2010开发环境,之前曾经与vs2010驱动的开发环境.重装系统,一次又一次的配置,找了好几篇文章,配置没有成功,在配置阶段突然成功了,直接把原来的驱动程序的配置文件将能够接管使用. 当 ...
- c# winform 引用sqlite.dll 运行报错解决方法
错误信息 : 未能加载文件或程序集“System.Data.SQLite, Version=1.0.81.0, Culture=neutral, PublicKeyToken=db937bc2d44 ...
- Red Hat Enterprise Linux Server(RHEL) yum安装软件时This system is not registered with RHN. RHN support will be disabled. 的解决方法(转)
新安装了redhat6.5.安装后,登录系统,使用yum update 更新系统.提示: This system is not registered to Red Hat Subscription M ...
- [Android 4.4.4] 泛泰A870 通过刷第三版 Mokee4.4.4 KTU84P 20140626 RC2.1 by syhost
主题及注意事项请访问以前的版本: http://blog.csdn.net/syhost/article/details/29931291 此RC2.1版比RC2.0改进的地方: 1. Mokee本身 ...
- 小谷的战斗Jquery(三)--水平和垂直菜单
日薪的例子似乎有点低,今天做多.行,这种实现是一个简单的菜单,Web项目中,有两个共同的菜单:纵向和横向.说到从垂直,看原代码. html代码实现最主要的菜单与子菜单 <span style=& ...
- 思维导图(自己整理,希望对大家有用):JavaScript函数+canvas绘图+Array数组
1.javascript函数: 2.Array数组: 3.canvas绘图:
- outlook 当关闭时最小化到任务栏完美的解决方案
近期使用Outlook,但很发现easy退出关闭.不能达到最小化封. 在网上找了很长时间也用outlook on the desktop插件,但该插件安装后的执行错误和被遗弃. 最后,我发现了一个叫k ...