`
duobility
  • 浏览: 17928 次
  • 性别: Icon_minigender_1
  • 来自: 钓鱼岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

笔记:JS权威指南18章—表单和表单元素

 
阅读更多

Form 对象: Javascript Form 对象代表了一个 HTML 表单, Form 对象通常可以作为 forms[] 数组的一个元素来使用,而这个数组是 Document 对象的一个属性。

document.forms[document.forms.length-1];// 引用文档的最后一个表单 
 

Form 对象的属性 elements[] 数组包含表示各种表单输入元素的 Javascript 对象 .

document.forms[1].ekement[2];// 引用文档的第二个表单的第三个元素 
 

Form 对象还包含其他属性,如 action encoding method target ,直接对应于 HTML 标记 <form> 的属性 action encoding method target ,这些属性都是可读可写的字符串。 Javascript Form 对象支持 submit() reset() 方法,分别用于提交表单和重置表单,对应的事件句柄为 onsubmit() onreset()

 

HTML 表单元素

对象

HTML 标记

Type 属性

描述和事件

Button

<input type=”button”>

<button type=”button”>

“button”

按钮;onclick

Checkbox

<input type=”checkbox”

“checkbox”

不具有单选行为的切换按钮;onclick

File

<input type=”file”>

“file”

用于输入要上载到web 服务器的文件名的输入框;onchange

Hidden

<input type=”hidden”>

“hidden”

随表单提交的数据,对用户不可见;没有事件句柄

Option

<option>

“option”

Select 对象中的一个项目,事件句柄属于Select 对象,而不属于单独的option 对象

Password

<input type=”password”>

“password”

输入口令的框,字符不可见;onchange

Radio

<input type=”radio”>

“radio”

具有单选按钮行为的切换按钮;onclick

Reset

<input type=”reset”>

<button type=”reset”>

“reset”

重置表单;onclick

Select

<select>

“select-one”

列表或下拉菜单,可选择一项;onchange

Select

<select multiple>

“select-multiple”

列表,可选多项

onchange

Submit

<input type=”submit”>

<button type=”submit”>

“text”

提交表单;onclick

Text

<input type=”text”>

“text”

单行文本输入框;onchange

Textarea

<textarea>

“textarea”

多行文本输入框;onchange

 

脚本化表单元素:在 <form> 标记中定义了 name 属性,则当代表那个表单的 Form 对象被创建时,它除了会作为一个 Document 对象的数组 forms[] 元素倍存储外,还会被存储在一个 Document 对象的个人属性。

<form name= everything >

js 中可以通过如下方式引用:

document.everything
document.forms[0]
document.address.zipcode;// 引用 address 表单的 zipcode 项 
 

 

表单元素的属性: type form name value

表单元素的事件句柄: onclick onchange onfocus onblur (表单元素还支持几乎所有 HTML 元素支持的各种事件句柄,如 onmouseover

 

按钮:超链接提供了与按钮作用一样的 onclick 事件句柄,任何按钮对象都可以用一个链接替换,只要该链接在被点击时进行与按钮被点击是相同的操作。在想使用与图形化的按钮类似的元素时,应该使用按钮;当 onclick 处理程序出发的动作可以被概念化为“沿着链接前进”时,应该使用链接。

 

切换按钮: checkbox radio 元素,当用户点击时,会触发 onclick 事件和 onchange 事件(较新的 web 浏览器才支持)

 

文本框: text 元素、 textarea 元素、 password 元素

select 元素和 option 元素:当用户选中或取消一个选项时, select 元素将触发它的 onchange 事件,对于单选按钮,可读可写的 selectedIndex 用数字指定被选中的项;对于多选按钮,必须遍历 options[] 数组来确定哪些项被选中。

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>包含所有表单元素的HTML表单</title>
</head>
<body>
<form name="everything">
  <table border="border" cellpadding="5">
	<tr>
	  <td>用户名:<br />[1]<input type="text" name="username" size="15" /></td>
	  <td>密码:<br />[2]<input type="password" name="password" size="15" /></td>
	  <td rowspan="4">输入事件[3]<br />
		<textarea name="textarea" rows="20" cols="28"></textarea>
	  </td>
	  <td rowspan="4" align="center" valign="center">
		[9]<input type="button" value="清除" name="clearbutton" /><br />
		[10]<input type="submit" name="submitbutton" value="提交" /><br />
		[11]<input type="reset" name="resetbutton" value="重置" /><br />
	  </td>
	</tr>
	<tr>
	   <td colspan="2">文件名:[4]<input type="file" name="file" size="15" /></td>
	</tr>
	<tr>
		<td>我的计算机外部设备:<br />
		   [5]<input type="checkbox" name="extras" value="burner" />DVD Write<br />
		   [5]<input type="checkbox" name="extras" value="printer" />打印机<br />
		   [5]<input type="checkbox" name="extras" value="card" />读卡器<br />
		 </td>
		 <td>我的浏览器:<br />
		   <input type="radio" name="browser" value="ie" />IE浏览器<br />
		   <input type="radio" name="browser" value="ff" />火狐浏览器<br />
		   <input type="radio" name="browser" value="other" />其他浏览器<br />
		 </td>
	</tr>
    	<tr>
		<td>我的爱好:<br />
		  <select multiple="multiple" name="hobbers" size="4">
		    <option value="programming">编写JS</option>
			<option value="caffeine">喝咖啡</option>
			<option value="annoying">和朋友玩</option>
		  </select>
		</td>
		<td align="center" valign="center">我最喜欢的颜色:<br />
		  <select name="color">
		   <option value="red">红色</option>
		   <option value="blue">蓝色</option>
		   <option value="violet">紫罗兰</option>
		  </select>
		</td>		
	</tr> 
  </table>
</form>

<div align="center">
 <table border=“4” bgcolor="pink" cellspacing="4">
  <tr>
   <td align="center"><b>Form Element</b></td>
   <td>[1]Text</td> <td>[2]Psssword</td> <td>[3]Textarea</td>
   <td>[4]FileU</td> <td>[5]Checkbox</td>
  </tr>
  <tr>
   <td>[6]Radio</td> <td>[7]Select (list)</td>
   <td>[8]Select (menu)</td> <td>[9]Button</td>
   <td>[10]Submit</td> <td>[11]Reset</td>
  </tr>
</table>
</div>

</body>
<script type="text/javascript">
function report(element, event) {
	if ((element.type == "select-one") || (element.type == "select_multiple")) {
		value = " ";
		for(var i = 0; i < element.options.length; i++){
			if (element.options[i].selected)
				value += element.options[i].value + " ";
		}
	}
	else if (element.type == "textarea") value += "...";
	else value = element.value;
	var msg = event + ": " + element.name + "(" + value + ")\n";
	var t = element.form.textarea;
	t.value = t.value + msg;	
}

function addhandlers(f) {
	for(var i = 0; i < f.elements.length; i++) {
		var e = f.elements[i];
		e.onclick = function() { report(this, "click"); }
		e.onchange = function() { report(this, "change"); }
		e.onfocus = function() { report(this, "foucs"); }
		e.onblur = function() { report(this, "blur"); }
		e.onselect = function() { report(this, "select"); }
	}
	f.submitbutton.onclick = function() {
		report(this, 'click');
		return false;
	}
	f.clearbutton.onclick = function() {
		this.form.textarea.value = '';
		report(this, 'click');
	}
	f.resetbutton.onclick = function() {
		this.form.reset();
		report(this, 'click');
		return false;
	}
}
addhandlers(document.everything);

</script>
</html>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>为HTML表单添加表单验证</title>
<style type="text/css">
input .invalid { background:#faa;}
input .valid { background:#afa; }
</style>
</head>
<body>
<form>
名字:<input type="text" name="name" required /><br />
邮箱:<input type="text" name="email" pattern="^\s*\w+@\w+\.\w+\s*$" /><br />
邮编:<input type="text" name="zip" pattern="^\s*\d{6}\s*$" /><br />
未通过验证:<input type="text" /><br />
<input type="submit" />
</form>
</body>
<script type="text/javascript">
//无干扰的javascript表单自动验证
(function() {
	if (window.addEventListener) window.addEventListener("load", init, false);
	else if (window.attachEvent) window.attachEvent("onload", init);
	
	function init() {
		for(var i = 0; i < document.forms.length; i++) {
			var f = document.forms[i];
			var needsValidation = false;
			
			for(j = 0; j < f.elements.length; j++) {
				var e = f.elements[j];
				
				if (e.type != "text") continue;
				var pattern = e.getAttribute("pattern");
				var required = e.getAttribute("required") != null;				
				
				if (required && !pattern) {
					pattern = "\\S";
					e.setAttribute("pattern", pattern);
				}
				
				if (pattern) {
					e.onchange = validateOnChange;
					needsValidation = true;
				}						
			}
			if (needsValidation) f.onsubmit = validateOnSubmit;		
		}
	}	
	
	function validateOnChange() {
		var textfield = this;
		var pattern = textfield.getAttribute("pattern");
		var value = this.value;		
			
		if (value.search(pattern) == -1) textfield.className = "invalid";
		else textfield.className = "valid";		
	}
		
	function validateOnSubmit() {
		var valid = false;
		for(var i = 0; i < this.elements.length; i++) {
			var e = this.elements[i];
			if (e.type == "text" && e.onchange == validateOnChange) {
				if (e.className == "invalid") invalid = true;
			}			
		}
			
		if (invalid) {
			alert("表单未完成或存在错误的输入项,\n请修改高亮域后重试!");
			return false;
		}		
	}	
})();

</script>
</html>
 

 

 

分享到:
评论

相关推荐

    Javascript权威指南学习笔记二

    ### JavaScript权威指南学习笔记二:客户端JavaScript #### 第十二章:Web浏览器中的JavaScript ##### 一、Web浏览器环境 在客户端JavaScript中,浏览器提供了一个特定的执行环境,其中`window`对象扮演着至关...

    Javascript权威指南学习笔记一

    JavaScript权威指南的学习笔记为我们深入理解这门语言的基础和特性提供了宝贵的资源。在第一部分中,主要探讨了JavaScript的核心概念和基本语法。 首先,JavaScript有两个主要的解释器:C语言编写的SpiderMonkey和...

    《HTML5权威指南》笔记第一部分

    HTML5权威指南》笔记第一部分中提到的知识点涵盖了HTML5的基础概念、HTML页面结构、基本元素、浏览器兼容性、编辑器推荐以及HTML5中的一些新特性。以下是对这些知识点的详细介绍: ### HTML5基础概念 HTML5是第五代...

    JS权威指南(第四版)学习笔记.doc

    JavaScript,全称JavaScript语言,是一种广泛应用于Web开发的轻量级、基于对象和事件驱动的脚本语言。它主要用于增强用户界面,与HTML和CSS一起构成网页开发的三大核心技术。JavaScript在网页中嵌入,无需预编译,...

    《jQuery权威指南》学习笔记之第3章 jQuery操作DOM

    现在我们专注于《jQuery权威指南》第三章——jQuery操作DOM的内容。DOM,即文档对象模型,是HTML和XML文档的编程接口,它将文档结构转换为一个树形结构,方便程序进行读取和修改。jQuery提供了丰富的API,让开发者...

    《jQuery权威指南》学习笔记之第1章 jQuery开发入门

    在实际学习过程中,通过阅读《jQuery权威指南》第1章并配合测试代码(未提供具体内容),可以更深入地理解和实践上述知识点,逐步掌握jQuery的开发基础。同时,不断练习和应用这些知识,才能真正提升开发技能,实现...

    《jQuery权威指南》学习笔记之第2章 jQuery选择器

    它的核心特性之一就是强大的选择器系统,使得开发者能够更方便地选取和操作DOM元素。 jQuery选择器是基于CSS选择器的扩展,它允许开发人员通过简洁的语法来选取页面上的特定元素。下面我们将详细讨论jQuery中的各种...

    《jQuery权威指南》学习笔记之第4章 jQuery中的事件与应用

    在深入探讨jQuery中的事件与应用之前,我们先要理解jQuery库的基本概念。...在阅读《jQuery权威指南》的第4章时,重点关注上述内容,结合实际项目进行实践,将有助于巩固和深化对jQuery事件处理的理解。

    HTML5权威指南 阅读计划-叶糖糖1

    《HTML5权威指南》是一本全面且深入介绍HTML5、CSS和JavaScript的书籍,适合初级到中级前端工程师阅读。本书的特色在于系统性地涵盖了HTML5的各项新特性,包括标记文字、文档分节、表格元素、表单以及自定义input...

    《HTML5权威指南》笔记第五部分

    ### HTML5权威指南第五部分知识点总结 #### 一、Ajax技术概述 - **定义**: Ajax (Asynchronous JavaScript and XML) 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术允许网页应用程序...

    vue3笔记,里面记了vue3的精华,减少学习时间

    标题和描述中都提到了“vue3笔记,里面记了vue3的精华,减少学习时间”,这意味着文档的主要内容是关于Vue 3的教程或者速成笔记,旨在帮助读者快速掌握Vue 3的核心概念和技巧。 从给定的文件内容可以提炼出以下Vue ...

    Oreilly.HTML学习笔记

    Oreilly出版的《HTML and XHTML: The Definitive Guide》是这个领域的权威指南,已经更新到第五版,为读者提供了深入理解HTML和XHTML的全面知识。 HTML是一种标记语言,它的主要作用是定义网页结构,通过不同的标签...

    java script

    如"javasript&DHTML.chm"可能涵盖了JavaScript与DHTML(Dynamic HTML)的结合使用,"JavaScript权威指南(英文版).chm"是一本深入学习JavaScript的参考书籍,"jsnote.doc"可能是个人的学习笔记,而"js.pdf"可能是关于...

    Note-for-personal-knowledge

    【标题】"Note-for-personal-knowledge"是一个个人知识整理的资源,可能包含了一系列与学习、笔记或个人技能提升相关的...如果要深入学习,还可以结合其他在线资源,如MDN Web Docs或者JavaScript权威指南等相关书籍。

    Learning-Resource-Path-Front-End::high_voltage:这个仓库为开发人员提供了一种资源,可以利用他们的前端开发之旅

    学习JavaScript是前端开发的基础,MDN Web Docs提供了权威的JS参考和教程。 2. **CSS**:层叠样式表(CSS)用于美化网页的布局和设计,包括颜色、字体、布局等。W3Schools提供易于理解的CSS教程,适合初学者入门。 3...

    web-learning-notes

    从描述中可以看到,学习者阅读了《JavaScript权威指南》,这是一本深入讲解JavaScript语法和特性的经典书籍。理解变量、数据类型、作用域、函数、对象、数组、闭包以及原型链是JavaScript的基础。随着ES6及以后版本...

Global site tag (gtag.js) - Google Analytics