JavaScript高级程序设计(十五)

表单脚本

  • 通过点击提交按钮提交表单时,浏览器会在将请求发送给服务器之前触发submit事件。这样,我们就有机会验证表单数据,并据以决定是否允许表单提交。阻止这个事件的默认行为就可以取消表单提交。
  • 在JavaScript中,以编程方式调用submit()方法也可以提交表单,以编程方式提交表单时,不会触发submit事件,因此要记得在调用此方法之前先验证表单数据。
  • 提交表单时可能出现的最大问题,就是重复提交表单。解决这一问题的办法有两个:在第一次提交表单后就禁用提交按钮,或者利用onsubmit事件处理程序取消后续的表单提交操作。
  • 与提交表单一样,也可以通过JavaScript来重置表单,但不同之处是,调用reset()方法会像单击重置按钮一样触发reset事件。
  • 重置表单的需求很少见。更常见的做法是提供一个取消按钮,让用户能够回到前一个页面。而不是不分青红皂白地重置表单中的所有值。
  • 使用focus()方法,可以将用户的注意力吸引到页面中的某个位置。例如,在页面加载完毕后,将焦点转移到表单中的第一个字段。在早期Web开发中,那时候的表单字段还没有readonly特性,就可以使用blur方法来创建只读字段。
  • 对于input和textarea元素,当它们从获得焦点到失去焦点且value值改变时,才会触发change事件。对于select元素,只要用户选择了不同的选项,就会触发change事件。(P418)
  • 对于文本框,size特性,可以指定文本框中能够显示的字符数。通过value特性,可以设置文本框的初始值,而maxlength特性则用于指定文本框可以接收的最大字符数。
  • 无论文本框与多行文本框在标记上有什么区别,但它们都会将用户输入的内容保存在value属性中。同时两种文本框都支持select()方法,这个方法用于选择文本框中的所有文本。(P422)
  • tabIndex特性表示当前字段的切换(tab)序号。
  • 响应向文本框中插入字符的操作是keypress事件。可以通过阻止这个事件的默认行为来屏蔽掉某类字符。(P424)
    12345
    //屏蔽非数值按键if (!/d/.test(String.fromCharCode(charCode)) && charCode > 9 &&!event.ctrlKey){EventUtil.preventDefault(event);}
  • 使用JavaScript可以从多方面增强表单字段的易用性。最常见的一种方式就是在用户填写完当前字段时,自动将焦点切换到下一个字段。通常在自动切换焦点之前,必须知道用户已经输入了限定长度的数据。
    1234567891011121314151617181920212223
    (function(){        function tabForward(event){            event = EventUtil.getEvent(event);            var target = EventUtil.getTarget(event);            if (target.value.length == target.maxLength){                var form = target.form;                for (var i=0, len=form.elements.length; i < len; i++) {                    if (form.elements[i] == target) {                        if (form.elements[i+1]){                            form.elements[i+1].focus();                        }                        return;                    }                }            }        }        var textbox1 = document.getElementById("txtTel1");        var textbox2 = document.getElementById("txtTel2");        var textbox3 = document.getElementById("txtTel3");        EventUtil.addHandler(textbox1, "keyup", tabForward);        EventUtil.addHandler(textbox2, "keyup", tabForward);        EventUtil.addHandler(textbox3, "keyup", tabForward);    })();
  • 随着Ajax的出现,表单序列化变得越来越普遍。在JavaScript中,可以利用表单字段的type属性,连同name和value属性一起实现对表单的序列化。在表单提交期间,浏览器是如何将数据发送给服务器的:
    • 对表单字段的名称和值进行URL编码,使用&分隔。
    • 不发送禁用的表单字段
    • 只发送勾选的复选框和单选框
    • 不发送type为”reset”和”button”的按钮
    • 多选选择框中的每个选中的值单独一个条目
    • 单击提交按钮提交表单的情况下,也会发送提交按钮;否则,不发送提交按钮
    • select元素的值,就是选中的option元素的value特性的值。如果option元素没有value特性,则是option元素的文本值。
  • 富文本编辑,又称为WYSIWYG(What You See Is What You Get,所见即所得)。这一技术的本质,就是在页面中嵌入了一个包含空HTML页面的iframe。通过设置designMode属性,这个空白的HTML页面可以被编辑,而编辑对象则是该页面body元素的HTML代码。designMode属性有两个可能的值:”off”(默认值)和”on”。在设置为”on”时,整个文档都会变得可以编辑(显示插入符号),然后就可以像使用文字处理软件一样。
  • designMode属性需要在页面完全加载后才能设置,因此,在包含页面中,需要使用onload事件处理程序在恰当的时刻设置designMode。(P438)
  • 另一种编辑富文本内容的方式是使用名为contenteditable的特殊属性,可以把contenteditable属性应用给页面中的任何元素,然后用户立即就可以编辑该元素。
  • 操作富文本,富文本选取以及表单与富文本相关内容可以看P439页面。

原文:大专栏  JavaScript高级程序设计(十五)

原文地址:https://www.cnblogs.com/chinatrump/p/11597031.html

时间: 2024-10-13 05:19:17

JavaScript高级程序设计(十五)的相关文章

《JavaScript高级程序设计第五章--引用类型》之Object对象和array对象

这一章主要就是介绍各种内置对象的用法,认识其经常用到的属性和方法. 5.1Object类型 创建objec的方式,一种是new Object(),一种是对象字面量(简化创建包含大量属性的对象的过程) var person = { name = "Nicholas"; age = 27 };//最后一个属性不必添加逗号,ie7等会导致错误 //在使用对象字面量语法时,属性名也可以使用字符串.这里的数值属性会自动转字符串. var person = { "name" :

javascript高级程序设计 第十四章--表单脚本

javascript高级程序设计 第十四章--表单脚本 在HTML中表单由<form>元素表示,在js中表单对应的是HTMLFormElement类型,这个类型也有很多属性和方法:取得表单元素的引用还是为它添加id特性,用DOM操作来获取表单元素:提交表单:把<input>或<button>元素的type特性设置为"submit",图像按钮把<input>元素的type特性设置为"image",也可以调用submit(

《Javascript高级程序设计》阅读记录(三):第五章 上

这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释上我的一些想法.做这个一方面是提升了我的阅读效果以及方便我以后阅读 另一个目的是,Javascript高级程序设计这本书内容很多也很厚,希望其他没有时间的人可以通过看这系列摘录,就可以大体学到书里面的核

JavaScript高级程序设计(读书笔记)(五)

本笔记汇总了作者认为"JavaScript高级程序设计"这本书的前七章知识重点,仅供参考. 第五章 引用类型 小结: 对象在JavaScript中被称为引用类型的值,而且有一些内置的引用类型可以用来创建特定的对象,现简要总结如下: 引用类型与传统面向对象程序设计中的类相似,但实现不同: Object是一个基础类型,其他所有类型都从Object继承了基本的行为: Array类型是一组值得有序列表,同时还提供了操作和转换这些值的功能: Date类型提供了有关日期和时间的信息,包括当前日期和

《javascript高级程序设计》第五章知识点总结

第五章知识点总结 1.object类型 访问对象的方法:①点表示法        (people.name) :      ②方括号表示法         (people[name]). 常用方法:hasOwnProperty()         用于检查给定属性在当前对象实例中是否存在 isPrototypeOf()              用于检测传入的对象是否传入对象原型 toString()                        返回对象的字符串表示 valueOf()    

《Javascript高级程序设计》阅读记录(四):第五章 下

这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释上我的一些想法.做这个一方面是提升了我的阅读效果以及方便我以后阅读 另一个目的是,Javascript高级程序设计这本书内容很多也很厚,希望其他没有时间的人可以通过看这系列摘录,就可以大体学到书里面的核心内容. 绿色背景的内容是我认为比较值得注意的原著内容. 黄色背景的内容是我认为非常重要的原著内容. 我的理解会用蓝色的字体标示出来. 这章的内容较多,而且比较重要,分两篇

JavaScript高级程序设计(第三版)学习笔记20、21、23章

第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值:字符串,数值,布尔值,null,不支持js特殊值:undefined 对象:一组无序的键值对 数组:一组有序的值的列表 不支持变量,函数或对象实例 注:JSON的字符串必须使用双引号,这是与JavaScript字符串最大的区别 对象 { "name":"Nicholas"

《JavaScript高级程序设计》学习笔记(4)——引用类型

欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,通常也被称为类,有时候也被成为对象定义,因为他们描述的是一类对象所具有的属性和方法.对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数来创建的, var person = new Object() ; 创建了一个object对象.构造函数

javascript高级程序设计 第一章--javascript简介

javascript高级程序设计 第一章--javascript简介Netscape开发的javascript最初的目的就是处理由服务器负责的一些输入验证操作,而在js问世之前,必须                    把表单数据发到服务器端用户才能得到反馈.如今的js不再局限于简单的数据验证,而且具备了与浏览器窗口及其内容等所有方面的交互能力,js已经发展成功能全面的面向客户端的编程语言.javascript由Netscape公司开发,原名Livescript,是为了迎合当时的java热,所