4事件

1事件及其处理程序

事件是制定活动发生时生成的信号,JavaScript认识这些信号,且能够建立脚本来对这些事件起作用。

blur,当输入焦点从窗体元素上删除时发生。

click,用户在链接或窗体元素上单击时发生。

change,用户改变窗体字段的值时发生。

focus,对窗体元素给定输入焦点时发生。

load,页面加载到浏览器时发生。

mouseover,用户在超文本链接上移动指针时发生。

select,用户选择窗体元素的字段时发生。

submit,提交窗体时发生。

unload,用户离开页面时发生。

例如:<input type="text" onChange="checkField(this)">//这里的this是指当前字段对象即text。

<input type="text" onChange="

if(parseInt(this.value)<=5){

alert("please enter a number greater than 5");

}">

模拟事件

除了事件处理程序外,模拟事件也是可能的。下面使用语Javascript的事件方法:

blur()、click()、focus()、select()、submit()、onchange()

<html>

<head>

<title>Events</title>

<script>

<!--

function react(field){

alert("please Enter a value");

field.focus();

}

//-->

</script>

</head>

<body>

<form method=post>

<input type=text name=stuff onFocus="react(this);">

</form>

</body>

</html>

事件处理程序onLoad与onUnload

当页面完成加载时生成onLoad事件,同样用户退出页面时发生onUnload事件。onLoad与onUnload事件作为body html标识符的1个特性使用。如:

<body onLoad="hello()" onUnload="goodbye()">

<html>

<head>

<title>example</title>

<body onLoad="alert(‘welcome to my page!‘);" onUnload="alert(‘goodbye!sorry to see you go!‘);">

</body>

</html>

window.open()的使用

该方法需要两个变元window.open("URL","window name");第一个参数是要打开的web页面的url,后一个参数是打开的窗口的名称。

2事件与窗体

一般窗体事件

用于处理窗体的最普通的事件是focus,blur以及change事件,与其相应的事件处理程序为onFocus、onBlur和onChange。利用这些事件,程序就能够记录何时用户在窗体的字段之间移动,以及何时改变输入字段的值。

其他窗体事件

在窗体中还有其他使用的事件,这些事件包括click和submit,相应的事件处理程序为onClick和onSubmit。

在建立函数是用到this关键字,this关键字是指当前的对象,在事件处理程序中,this关键字是指使用于事件处理程序的对象。如要一个文本组件永远获不到焦点:

<input type="text" name="enter" value="" onFocus="this.blur()">

<input type="text" name="enter1" value="" onFocus="display(this.form);">

注意这里的this指html窗体内当前字段的对象,this.form指包含当前字段的窗体的对象。

3form对象

form对象的属性

action:包含FORM标识符的ACTION特性值的字符串。

elements:对窗体的每个元素包含一个入口的数组。

encoding:包含MIME类型的字符串,反映FORM标识符ENCTYPE特性。

name:包含FORM标识符的NAME特性值的字符串。

target:包含由窗体提交普唑的窗口名字的字符串。

form对象的方法

窗体只有1个可用于它的方法:submit()。该方法模仿提交按钮。

例如:

<html>

<head>

<title>example</title>

<script language="javascript">

<!--

function checkValue(form){

if(form.answer.value=="100"){

form.submit();

document.write("答对了");

}

else{

form.answer.value="";

}

}

//-->

</script>

</head>

<body>

<form method=post onSubmit="return false;">

what is 10*10?<input type="text" name="answer" onChange="checkValue(this.form);">

</form>

</body>

</html>

返回false给onSubmit事件处理程序可以保证用户在文本输入字段内按回车时不提交窗体。

4窗体元素的使用

button,提供除提交按钮或复位按钮以外的按钮的新元素。<INPUT type="button">

checkbox,复选框<input type="checkbox">

hidden,隐含字段<input type="hidden">

password,口令字段,每一击键会在该字段内显示出一个星号。<input type="password">

radio,单选钮<input type="radio">

reset,复位按钮<input type="reset">

select,选择列表<select><OPTION>option1</OPTION><OPTION>option2</OPTION></select>

submit,提交按钮<input type="submit">

text,文本字段<input type="text">

textArea,多行文本输入字段<textarea>default text</textarea>

button元素

按钮元素用INPUT标识符来确定:

<input type="button" name="name" value="buttonName">

该按钮元素有两个属性:name与value

该按钮元素只有1个事件处理程序onClick,与其对应的方法为1个click().

checkbox元素

checkbox元素的属性与方法

checked,表示复选框元素的当前状态。

defaultChecked,表示元素的缺省状态。

name,表示在INPUT标识符内确定的元素的名字.

value,表示在INPUT标识符内确定的元素的当前值

click(), 模拟复选框内的单击(方法),onClick事件处理程序。

hidden元素

隐含字段能够用来存储需要传送到服务器以及窗体提交的值。hidden元素只有2个对应的属性name和value,两者均像其他对象一样为字符串值。hidden对象没有方法与事件处理程序。

password元素

password对象有3个属性:defaultValue,name以及value。password字段包括更多的方法focus()、blur()和select()以及相应的事件处理程序onFocus、onBlur、onSelect。

radio元素

radio元素将若干个单选钮组合成1组而且在给定的时间内只能选择1个按钮。

<input type="radio" name="test" value="1" checked>1<br>

<input type="radio" name="test" value="2">2<br>

<input type="raido" name="test" value="3">3<br>

radio对象的属性与方法

checked,表示radio元素的当前状态.if(test[1].checked)

defaultChecked,表示元素的缺省状态

index,表示组中当前所选单选钮的索引。

length,表示组中单选钮的个数。

name,表示在INPUT标识符中确定的元素的名字.

value,表示在INPUT标识符中确定的元素的当前值

click(),模拟单选钮内的单击。事件处理程序onClick。

由于单选按钮组有多个元素,因此,radio对象有索引起始于0的单选钮的数组.test[0]/test[1]...

<html>

<head>

<title>example</title>

<script language="javascript">

<!--

function jieguo(form){

//判断单选按钮的那一项当前被选中

if(form.action[0].checked){

form.result.value=form.entry.value*2;

}else{

form.result.value=form.result.value*form.result.value;

}

}

//-->

</script>

</head>

<body>

<form method=post onSubmit="return false;">

Value:<input type=text name="entry" value="0" onChange="jieguo(this.form);">

<br>

Action:<br>

<input type="radio" name="action" value="twice" checked>twice<br>

<input type="radio" name="action" value="square">square<br>

Result:<input type="text" name="result" value="">

</form>

</body>

</html>

reset元素

reset对象有两个属性name和value,1个方法click()。onClick事件处理程序。reset对象能够用来将窗体清除成一些值而不是缺省值。

**********************

select元素

html窗体内的选择列表具有可选择项的弹出式菜单或滚动列表的形式出现。列表的建立用到2个标识符SELECT和OPTION。如:

<SELECT NAME="test">

<OPTION SELECTED>1

<OPTION>2

<OPTION>3

</SELECT>

以上建立了一个下拉式菜单,利用size特性能够建立1个滚动列表。size特性表示可见元素数。如果没有使用MULTIPLE属性则只能做出1个选择,如果使用了MULTIPLE属性,用户可以进行多个选择。

<SELECT NAME="test" SIZE=2 NULTIPLE>

与单选按钮一样,选择列表以索引起始于0的数组保存。数组是称为options的select对象的1个属性。除了options数组外,select对象有selectedIndex属性,该属性包含当前所选择项的索引值。

选择列表的每个选项也有若干属性。defaultSelected表示选项是否在OPTION表示符内缺省选择。index属性包含options数组中当前选项的索引值。selected表示选项的当前状态。text包含在菜单中指定选项显示的文本值。value包含OPTION标识符内value属性的值。

select对象没有可用的方法,然而select对象有3个事件处理程序:onBlur、onFocus、onChange。与text对象一样。

以下是javascript操作select的对象objSelect的例子:

触发select的onchange事件。

<select   name= "selectx "   onchange= "alert(this.value); ">

<option   value=a> 1 </option>

<option   value=b> 2 </option>

</select>

function testSelect(self){

//我们需要将select的某个option设为选中,在调用onchange()方法来触发change事件。

self.value=a;//或者self.options[0].selected=true;

self.onchange();

}

<input   type= "button "   value= "改变 "   onclick= "testSelect(this)">

// 1.判断select选项中 是否存在Value="paraValue"的Item

function jsSelectIsExitItem(objSelect, objItemValue) {

var isExit = false;

for (var i = 0; i < objSelect.options.length; i++) {

if (objSelect.options[i].value == objItemValue) {

isExit = true;

break;

}

}

return isExit;

}

// 2.向select选项中 加入一个Item

function jsAddItemToSelect(objSelect, objItemText, objItemValue) {

//判断是否存在

if (jsSelectIsExitItem(objSelect, objItemValue)) {

alert("该Item的Value值已经存在");

} else {

var varItem = new Option(objItemText, objItemValue);

objSelect.options.add(varItem);

alert("成功加入");

}

}

// 3.从select选项中 删除一个Item

function jsRemoveItemFromSelect(objSelect, objItemValue) {

//判断是否存在

if (jsSelectIsExitItem(objSelect, objItemValue)) {

for (var i = 0; i < objSelect.options.length; i++) {

if (objSelect.options[i].value == objItemValue) {

objSelect.options.remove(i);

break;

}

}

alert("成功删除");

} else {

alert("该select中 不存在该项");

}

}

// 4.删除select中选中的项

function jsRemoveSelectedItemFromSelect(objSelect) {

var length = objSelect.options.length - 1;

for(var i = length; i >= 0; i--){

if(objSelect[i].selected == true){

objSelect.options[i] = null;

}

}

}

// 5.修改select选项中 value="paraValue"的text为"paraText"

function jsUpdateItemToSelect(objSelect, objItemText, objItemValue) {

//判断是否存在

if (jsSelectIsExitItem(objSelect, objItemValue)) {

for (var i = 0; i < objSelect.options.length; i++) {

if (objSelect.options[i].value == objItemValue) {

objSelect.options[i].text = objItemText;

break;

}

}

alert("成功修改");

} else {

alert("该select中 不存在该项");

}

}

// 6.设置select中text="paraText"的第一个Item为选中

function jsSelectItemByValue(objSelect, objItemText) {

//判断是否存在

var isExit = false;

for (var i = 0; i < objSelect.options.length; i++) {

if (objSelect.options[i].text == objItemText) {

objSelect.options[i].selected = true;

isExit = true;

break;

}

}

//Show出结果

if (isExit) {

alert("成功选中");

} else {

alert("该select中 不存在该项");

}

}

// 7.设置select中value="paraValue"的Item为选中

document.all.objSelect.value = objItemValue;

// 8.得到select的当前选中项的value

var currSelectValue = document.all.objSelect.value;

// 9.得到select的当前选中项的text

var currSelectText = document.all.objSelect.options[document.all.objSelect.selectedIndex].text;

// 10.得到select的当前选中项的Index

var currSelectIndex = document.all.objSelect.selectedIndex;

// 11.清空select的项

document.all.objSelect.options.length = 0;

****************

submit元素

该按钮利用form标识符内表示的method方法,将窗体每一字段的当前信息提交到form标识符的ACTION特性中所指定的URL。submit有name和value属性以及click()方法与onClick事件处理程序。使用submit的click()方法相当于单击才submit元素将表单提交。

text元素

text对象有3个属性即:defaultValue、name和value。有3个方法模拟用户事件即:focus()、blur()和select()。有4个事件处理程序:onFocus,onChange和onSelect()。

textarea元素

TEXTAREA标识符提供了由容器定义的定制大小的多行文本输入字段。如:

<textarea name="fieldName" Rows=10 clos=25>

default text

</textarea>

textarea对象和text具有一样的属性和方法。

5elements[]数组

在form对象的属性中,窗体内的所有元素可以由数组elements[]引用.例如:

<form method=post name=testform>

<input type="text" name="one">

<input type="text" name="two">

<input type="text" name="three">

</form>

那么除了明显的document.testform.one、document.testform.two以及document.testform.three外还可以把3个元素表示为:document.testform.elements[0]、document.testform.elements[1]、document.testform.elements[2]

6forms[]数组

虽然事件处理程序一般用于单个窗体或字段,但有时能够用来引用与页面上其他窗体相关的窗体。document.forms[]数组可起到该作用,它是的有可能在同一页面上有多个相同的窗体,用document.forms[]数组要比用窗体的名字更容易达到这一点。

7常用事件

Click事件与Dblclick事件

Click事件:当一个页面的一个位置、按钮、复选框或一个超级链接被用户单击时,产生该事件。

Dblclick事件:当用户用鼠标双击一个超级链接或其他页面元素就会产生一个Dblclick事件。

MouseDown事件与MouseUp事件

MouseDown事件,当用户按下鼠标上的一个键时就会产生一个MouseDown事件。

MouseUp事件,当用户施放鼠标上的一个键时就会产生一个MouseUp事件。

MouseOver事件、MouseOut事件和MouseMove事件

MouseOver事件,当用户将鼠标已过一个超级链接或其他页面元素时就会产生一个MouseOver事件。

MouseOut事件,当用户将鼠标移开并脱离一个超级链接或其他页面元素时就会发生MouseOut事件。

MouseMove事件,当用户移动鼠标进入时就会发生MouseMove事件。

KeyDown事件、KeyPress事件和KeyUp事件

例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>测试</title>

<script type="text/javascript" src="jquery-1.7.2.min.js"></script>

<script type="text/javascript">

function test(obj,event){

alert(event.keyCode);

alert(obj.id);

}

window.status="按下键盘上的键";

</script>

</head>

<body>

//传递this对象和event对象

<input type="text" id="key" onkeydown="test(this,event)"/>

</body>

</html>

onLoad事件与UnLoad事件

onLoad事件:onLoad事件一般在浏览器提取页面之后,在<body>标记块的内容显示出来之前发生。

UnLoad事件:当浏览器卸载一个文档时就发生UnLoad事件。

onFocus事件与onBlur事件

当用户使用鼠标或键盘选中一个页面元素,产生onFocus事件。当页面元素、窗口或框架失去焦点时,就会产生Blur事件。

Submit事件和Reset事件

当用户单击表单中的一个提交按钮,生成Submit事件。当表单被重置时就会产生一个Reset事件。

例:

<html>

<head>

<script language="javascript">

function checkdata(){

var inputdata=document.form1.text1.value;

if(0<inputdata&&inputdata<100)

return (true)//函数返回true,表示提交的内容正确,那么Submit事件就会向服务器提交。

else{

alert("你输入的数值"+inputdata+"超出了范围");

return(false)//函数返回false,表示提交的内容不正确,Submit事件会放弃向服务器提交。

}

}

</script>

</head>

<body>

<form name="form1" method="post" onSubmit="checkdata()">

请输入100以内的正整数:

<input type="text" name="text1" value="1" size="5">

<input type="

}

onChange事件与onSelect事件

onChange事件:当一个页面元素如文本框、多行文本失去鼠标或键盘的焦点或值被改变时会产生Change事件。

onSelect事件:当用户选择了文本框或多行文本框内的一个文本时就会产生Select事件。只针对文本。

Move事件和Resize事件

Resize事件:当用户调整窗口或框架的大小时,会产生一个Resize事件。

Move事件:当用户移动窗口或框架的时会产生Move事件。

onDblClick 鼠标双击

onKeyDown 键被按下

onKeyPress 键被按下然后被释放

onKeyUp 键被释放

onMouseDown 鼠标被按下

onMouseMove 鼠标移动

onMouseUp 鼠标被释放

onResize 窗口被调整大小

下面是event对象属性的描述,以及Netscape和IE处理它们的方式:

描述                            Microsoft属性  Netscape 属性

代表事件类型的字符串             type          type

代表最初发送给对象事件的字符串   srcElement     target

光标横坐标                      x              x

光标纵坐标                      y              y

相对于页面的横坐标              clientX        pageX

相对于页面的纵坐标              clientY        pageY

相对于屏幕的横坐标              screenX        screenX

相对于屏幕的纵坐标              screenY        screenY

键代码                          keyCode         which

Netscape(火狐)现在既支持keyCode属性也支持which属性。

例如:

if(event.keyCode==13)alert("enter!");

8一般html元素都具有的属性和事件

属性

accessKey,取值为单个字符的字符串。可以为元素指定一个键盘字符,当键入Alt+key组合,该元素就拥有了焦点。指定的字符可以大写或小写,并不区分大小写。当元素获得焦点,按下空格键就和鼠标点击元素一样。

disabled,取值为boolean。将该元素设为不可用。

childNodes,节点对象数组。

children属性包括元素对象的一个数组,这些元素包括在当前对象中。不像childNodes属性,children不考虑文本节点,

heigth和width,取值为整型,表示元素的高和宽。

id,取值字符串,通过id属性将一个标识符赋给该对象。

blur()与focus(),elementObject.blur()方法从元素中移除焦点。elementObject.focus()把焦点带给元素。

click()方法让脚本完成和点击元素相同的动作,它只在行为类似按钮的Input元素上可用。它会触发onClick事件。

getAttribute("attributeName")方法返回当前对象的特定属性的值,可以使用该方法作为得到对象属性的替代方法。

getBoundingClientRec(),返回一个TextRectangle对象,该对象有top、left、bottom和right四个属性。反应了元素占据的空间。

onCopy和onCust事件在用户或脚本在当前对象上启动复制或剪切编辑动作后立即触发。

onDblClick、onClick、onMouseDown、onMouseUP、onDrag事件处理。

时间: 2024-09-30 19:27:19

4事件的相关文章

移动端点击事件全攻略,有你知道与不知道的各种坑

看标题的时候你可能会想,点击事件有什么好说的,还写一篇攻略?哈哈,如果你这么想,只能说明你too young to simple. 接触过移动端开发的同学可能都会面临点击事件的第一个问题:click事件的300ms延迟响应.不能立即响应给体验造成了很大的困扰,因此解决这个问题就成为了必然. 这个问题的解决方案就是: zepto.js的tap事件.tap事件可以理解为在移动端的click事件,而zepto.js因为几乎完全复制jQuery的api,因此常常被用在h5的开发上用来取代jquery.

js监控微信浏览器的自带的返回事件

pushHistory(); window.addEventListener("popstate", function(e) { e.preventDefault(); //alert("我监听到了浏览器的返回按钮事件啦"); //根据自己的需求实现自己的功能 //window.location = 'http://www.baidu.com'; pushHistory(); }, false); function pushHistory() { var state

微信小程序学习总结(2)------- 之for循环,绑定点击事件

最近公司有小程序的项目,本人有幸参与其中,一个项目做下来感觉受益匪浅,与大家做下分享,欢迎沟通交流互相学习. 先说一下此次项目本人体会较深的几个关键点:微信地图.用户静默授权.用户弹窗授权.微信充值等等. 言归正传,今天分享我遇到的关于wx:for循环绑定数据的一个tips:  1. 想必大家的都知道wx:for,如下就不用我啰嗦了: <view class="myNew" wx:for="{{list}}">{{item.title}}<view

touchstart和touchend事件

touchstart和touchend事件 移动互联网是未来的发展趋势,现在国内很多互联网大佬都在争取移动这一块大饼,如微信及支付宝是目前比较成功的例子,当然还有各种APP和web运用. 由于公司的需要,最近也在开发移动web,对于一个没有移动开发经验的人来说,其实也是比较困恼的一件事情.对于移动web开发目前主要是基于webkit内核的浏览器.在webkit内核的环境下开发,你可以充分的运用html5+css3,还有它的一些私有属性.这让我很兴奋.可是,毕竟,对于一个长期习惯pc端做固定像素开

苹果手机输入中文不会触发onkeyup事件

今天同事的项目有这个问题,用我的安卓手机输入中文是ok的,但是苹果手机就不行 使用keyup事件检测文本框内容:  $('#keyup_i').bind('keyup', function(){         $('#keyup_s').text($(this).val());  } 本来是上面这种处理方式,现在改成下面这样就ok了 使用oninput以及onpropertychange事件检测文本框内容:  //先判断浏览器是不是万恶的IE,没办法,写的东西也有IE使用者       var

离散事件模型

0x01 代码框架逻辑 模拟内容: 1.离散事件模拟,模拟银行营业时的排队情况 2.不考虑顾客中途离开,顾客到达事件随机,业务办理时间 3.长度随机,选择最短的队排队,不再换队 代码逻辑: 1.一个事件链表,四个窗口排队队列 2.事件驱动:每有一个新的顾客到达,将产生下一个新顾客到达的新事件按时间顺序从小到大(OccurTime)插入事件链表(EventList) (如果此时窗口队列只有 一个顾客,还将产生此顾客离开事件插入事件链表中)      每有一个顾客从某一队列首离开,将产生他的后一位顾

zepto事件

1.zepto的定义 Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api 2.zepto与jq的区别 ①相同点:Zepto最初是为移动端开发的库,是jQuery的轻量级替代品,因为它的API和jQuery相似,而文件更小:zepto的API大部分都能和jQuery兼容,所以用起来极其容易 ②不同点: (1).针对移动端程序,Zepto有一些基本的触摸事件可以用来做触摸屏交互(tap事件.swipe事件) (2),Dom操作的区别:添加id时jQ

15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步??

应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型. 事件模型简介及常见事件模型 对于采用了图形用户界面的程序来说,事件控制是非常重要的. 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件. 一个事件源必须注册监听器以便监听器可以接收关于一个特定事件的通知. 每种类型的事件都有其自己的注册方法,一般形式为: v

RecyclerView动态添加、删除及点击事件

上一节讲解了RecyclerView的三种显示方式,本节将主要研究一下RecyclerView的动态添加.删除及其单击和长按事件的处理.我们在上一节代码的基础上进行相关操作. 一.修改适配器类MyAdapter,加入添加和删除这两个方法: public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private Context context; private List<String>

事件(1)

事件三要素 事件源:事件发生的来源 事件:行为(点击,触摸...) 监听器:当事件发送时,所要做的事情  onClickListener(单击事件) 组件.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { String str=et.getText().toString(); tv.setText(str); } }); 1 public class Click extends Ac