事件处理器

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--基于对象的脚本语言学习笔记(三)的更多相关文章

  1. JavaScript--基于对象的脚本语言学习笔记(一)

    1.两种嵌入js的方式    使用javascript前缀构建url:<a href="javascript:alert('执行JavaScript. .')">执行j ...

  2. Go语言学习笔记三: 常量

    Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...

  3. InstallShield 脚本语言学习笔记

    InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      ...

  4. 【GO】GO语言学习笔记三

    7.数组: 几乎是最常用的数据类型了... 数组就是指一系列同一类型数据 的集合.数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数 组的长度. 常规的数组声明方法: ...

  5. Go语言学习笔记(三) [控制结构、内建函数]

    日期:2014年7月21日   一.控制结构   1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语 ...

  6. 【Linux_Shell 脚本编程学习笔记三、分支与循环结构】

    if 语句是实际生产工作中最重要且最常用的语句,所以,必须掌握牢固 if 条件语法 1. 单分支机构 if  [ 条件 ] then 指令 fi 或 if  [  条件 ]; then 指令 fi   ...

  7. [C语言学习笔记三]格式化输出和输入

    使用 printf 函数来输出,使用 scanf 函数来输入 在 printf 函数中使用变量,需要使用占位符代替. int 型一般存储整数,使用 %d 代替 long long int 型一般存储长 ...

  8. c语言学习笔记三

    第三章,函数 字符串函数 //strcmp int my_strcmp(char *str1,char *str2) {   while(*str1 = = *str2)   /*不可用while(* ...

  9. 基于python实现自动化办公学习笔记三

    Excel(1)写xls文件 # 有序字典from collections import OrderedDict# 存储数据from pyexcel_xls import save_data def ...

随机推荐

  1. ios-上拉电阻负载许多其他接口

    想尝试拉加载意识到有多少开始了他的研究之旅,我看了两天做出最终的界面. 之所以这么慢是由于,我不知道要将上拉出现的view放在哪.就能在scrollView拉究竟部的时候被拉出来.还有就是怎么拉出来之 ...

  2. SPOJ PT07X Vertex Cover

    题目意思: 一棵树,找到最少的点能覆盖到所有的边,(也就是每条边俩端 至少有一个在你找到的集合): 解法:每条边只能被俩个点中的一个,或全部覆盖所以我们有树形DP来解: DP[num][flag]// ...

  3. WPF中两条路径渐变的探讨

    原文:WPF中两条路径渐变的探讨 我们在WPF中,偶尔也会涉及到两条路径作一些“路径渐变 ”.先看看比较简单的情形:如下图(关键点用红色圆点加以标识):(图1) 上面图1中的第1幅图可以说是最简单的路 ...

  4. Hadoop-2.2.0中文文档—— MapReduce下一代- 可插入的 Shuffle 和 Sort

    简单介绍 可插入的 shuffle 和 sort 功能,同意在shuffle 和 sort 逻辑中用可选择的实现类替换.这个情况的样例是:用一个不是HTTP的应用协议,如RDMA来 shuffle 从 ...

  5. mysqlbackup 还原特定的表

    mysqlbackup使用TTS恢复指定表. ************************************************************* 4.恢复特定表 ******* ...

  6. CCLayer在Touch事件(Standard Touch Delegate和Targeted Touch Delegate)

    在做练习,触摸故障,看到源代码,以了解下触摸事件. 练习操作:直CClayer子类init在 this->setTouchEnabled(true); 事件处理方法覆盖 virtual bool ...

  7. 源代码版本控制工具TortoiseSVN,AnkhSVN最新版本下载地址

    TortoiseSVN http://tortoisesvn.net/downloads.html 页面下部有中文语言补丁 AnkhSVN https://ankhsvn.open.collab.ne ...

  8. cocospods 卡在 Analyzing dependencies

    參考链接:http://www.cocoachina.com/bbs/read.php? tid=193398 关于pod stetup的详解在这里.对于初次使用CocoaPods的同学,即使你不使用 ...

  9. 2014百度之星预赛(第二场)——Best Financing

    2014百度之星预赛(第二场)--Best Financing Problem Description 小A想通过合理投资银行理財产品达到收益最大化.已知小A在未来一段时间中的收入情况,描写叙述为两个 ...

  10. 自己写CPU第四阶段(2)——验证该第一指令ori实现效果

    我们会继续上传新书<自己写CPU>(未公布),今天是12片,四篇 书名又之前的<自己动手写处理器>改为<自己动手写CPU> 4.3 验证OpenMIPS实现效果 4 ...